C#操作xml SelectNodes,SelectSingleNode总是返回NULL原因和解决方案

来源:互联网 发布:ubuntu gnome英伟达 编辑:程序博客网 时间:2024/05/17 19:20

1. SelectNodes,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>

     下面尝试读取error节点的内容

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

     返回的结果一直为Null

     产生这个问题的原因就在于上面的xml文档中使用了命名空间,当xml中定义了命名空间时,在查找节点的时候需要使用下面的方法

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

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

    如果直接想定位到error,而不是从根开始,需要写为

xmldoc.SelectSingleNode("//ns:error", nsMgr);  
0 0
原创粉丝点击