SelectSingleNode总是返回null?

时间:2009-11-19 20:22:13

标签: c# xml xpath namespaces selectsinglenode

以这个简化的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方法选择'error'节点,但是使用以下代码它总是返回NULL?

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

从研究中我已经完成了这与命名空间有关但我根本无法得到任何工作。有什么建议吗?

1 个答案:

答案 0 :(得分:21)

您错过了<message>调用中SelectSingleNode节点定义的XML命名空间。假设ossXmlDocument实例,则需要执行此操作:

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

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

马克