Подтвердить что ты не робот

SelectSingleNode всегда возвращает null?

Взяв этот упрощенный пример моего XML:

<?xml version="1.0"?>
<message xmlns="http://www.mydomain.com/MyDataFeed" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mydomain.com/MyDataFeed https://secure.mydomain/MyDataFeed/myDataFeed.xsd" requestId="13898" status="1">
<error>Invalid Login</error>
</message>

Я пытаюсь выбрать "ошибка" node с помощью метода SelectSingleNode, однако, используя следующий код, он всегда возвращает NULL?

XmlNode errorNode = oss.SelectSingleNode("/message/error");
if (errorNode != null)
     Console.Writeline("There is an error");

Из исследования, которое я сделал, это связано с пространствами имен, но я просто не могу заставить ничего работать. Любые советы?

4b9b3361

Ответ 1

Вам не хватает пространства имен XML, определенного <message> node в вашем вызове SelectSingleNode. Предполагая, что oss является экземпляром XmlDocument, вам нужно сделать это:

XmlNamespaceManager nsMgr = new XmlNamespaceManager(oss.NameTable);
nsMgr.AddNamespace("ns", "http://www.mydomain.com/MyDataFeed");

XmlNode errorNode = oss.SelectSingleNode("/ns:message/ns:error", nsMgr);

Марк