您的位置:首页 > Web前端 > Node.js

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

2016-11-12 22:40 471 查看
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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐