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