Почему SelectSingleNode возвращает пустой указатель?

Чтобы gRPC-Web работал, вам необходимо иметь конечную точку Envoy перед вашей службой gRPC. В частности, вам необходимо включить gRPC-Web-фильтр в вашей конфигурации envoy.yaml следующим образом: https://github.com/grpc/grpc-web/blob/master/net/grpc/gateway/examples/ эхо / envoy.yaml # L35-L38

6
задан Deduplicator 1 February 2015 в 14:12
поделиться

1 ответ

Я не могу воспроизвести это, используя файл XML

<MT>
  <Events>
    <event id="1">
      <field name="blah" value="a_value" type="atype" />
     </event>
   </Events>
</MT>

и код

XmlDocument doc = new XmlDocument();
doc.Load(@"C:\test.xml");

XmlNode node = doc.SelectSingleNode("//event[@id='1']");

. Это возвращает ненулевой узел, как и ожидалось.

Обновление

После добавления xmlns = "example.org" для элемента , мне пришлось настроить менеджер пространства имен для XPath и использовать пространство имен для события. По какой-то причине не удалось заставить работать пространство имен по умолчанию.

XmlDocument doc = new XmlDocument();
doc.Load(@"D:\test.xml");

XmlNamespaceManager manager = new XmlNamespaceManager(doc.NameTable);
manager.AddNamespace("e", "http://example.org");

XmlNode node = doc.SelectSingleNode("//e:event[@id='1']", manager);

Одна вещь смутила меня, когда я пытался заставить это работать. Почему XmlNamespaceManager требует XmlNameTable из документа, если не для выяснения того, какие пространства имен он содержит? Например, зачем мне определять NameTable и пространство имен? Я был бы признателен, если бы кто-то, кто знает, мог оставить короткий комментарий.

10
ответ дан 10 December 2019 в 00:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: