SelectSingleNode 总是返回 null?

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方法选择“error”节点,但是使用以下代码它总是返回NULL?
XmlNode errorNode = oss.SelectSingleNode("/message/error");
if (errorNode != null)
     Console.Writeline("There is an error");

根据我的研究,这与命名空间有关,但我无法让任何东西正常工作。 有什么建议吗?


根据我的研究,这个问题涉及到命名空间,但是我尝试了各种方法都无法解决。请问你有什么建议吗?

1个回答

24

在您的SelectSingleNode调用中,<message>节点定义的XML命名空间缺失。假设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);

Marc

-->

马克


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接