12

私の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>

SelectSingleNodeメソッドを使用して「エラー」ノードを選択しようとしていますが、次のコードを使用すると、常にNULLが返されますか?

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

私が行った調査によると、これは名前空間に関連していますが、何も機能させることができません。何かアドバイス?

4

1 に答える 1

24

呼び出しで<message>ノードによって定義されたXML名前空間がありません。インスタンスであるSelectSingleNodeと仮定すると、これを行う必要があります。ossXmlDocument

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

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

マーク

于 2009-11-19T20:26:15.057 に答える