C#操作XML- SelectSingleNode总是返回NULL
2012-12-01 12:19
441 查看
我用C#中的XmlDocument读取XML格式的文件,一个是报表文件(.rdl),另一个是Nhibernate映射文件(Mapping.hbm.xml),但是SelectNodes,SelectSingleNode总是返回NULL,纠结半天,原因是这两个xml文件中声明有自己的命名空间。
以Nhibernate映射文件为例:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="****" namespace="****">
<class name="CommonEntity" table="common.Entity"></class>
</hibernate-mapping>
其中的命名空间为:urn:nhibernate-mapping-2.2,要想读取到class节点,需要通过以下方式
XmlDocument xml = new XmlDocument();
xml.Load(path);
XmlNamespaceManager nsMgr = new XmlNamespaceManager(xml.NameTable);
nsMgr.AddNamespace("ns", "urn:nhibernate-mapping-2.2");
XmlNodeList classes = xml.SelectNodes("//ns:class", nsMgr);
XmlNode singleClass = xml.SelectSingleNode("/ns:hibernate-mapping/ns:class", nsMgr);
解决方案出自于强大的stackoverflow
http://stackoverflow.com/questions/1766254/selectsinglenode-always-returns-null
以Nhibernate映射文件为例:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="****" namespace="****">
<class name="CommonEntity" table="common.Entity"></class>
</hibernate-mapping>
其中的命名空间为:urn:nhibernate-mapping-2.2,要想读取到class节点,需要通过以下方式
XmlDocument xml = new XmlDocument();
xml.Load(path);
XmlNamespaceManager nsMgr = new XmlNamespaceManager(xml.NameTable);
nsMgr.AddNamespace("ns", "urn:nhibernate-mapping-2.2");
XmlNodeList classes = xml.SelectNodes("//ns:class", nsMgr);
XmlNode singleClass = xml.SelectSingleNode("/ns:hibernate-mapping/ns:class", nsMgr);
解决方案出自于强大的stackoverflow
http://stackoverflow.com/questions/1766254/selectsinglenode-always-returns-null
相关文章推荐
- C#操作xml SelectNodes,SelectSingleNode总是返回NULL原因和解决方案
- C#操作xml SelectNodes,SelectSingleNode总是返回NULL原因和解决方案
- C#操作xml SelectNodes,SelectSingleNode总是返回NULL 与 xPath 介绍
- C#操作xml SelectNodes,SelectSingleNode总是返回NULL原因和解决方案
- C#操作xml SelectNodes,SelectSingleNode总是返回NULL原因和解决方案
- C#操作xml SelectNodes,SelectSingleNode总是返回NULL 与 xPath 介绍
- C#操作xml SelectNodes,SelectSingleNode总是返回NULL 与 xPath 介绍
- C#操作xml SelectNodes,SelectSingleNode总是返回NULL 与 xPath 介绍
- C#操作xml SelectNodes,SelectSingleNode xmlns 总是返回NULL 与 xPath 介绍
- c# 操作Xml中SelectSingleNode方法中的xpath用法
- C#操作XML文档(XmlDocument、XmlNode、XmlAttribute、SelectSingleNode、SelectNodes、XmlNodeList)
- C#操作XML文档(XmlDocument、XmlNode、XmlAttribute、SelectSingleNode、SelectNodes、XmlNodeList)
- 黄聪:C#操作xml SelectNodes,SelectSingleNode通过 xPath 定位class包含Contains的DIV
- C#操作xml SelectNodes,SelectSingleNode总是返回NULL 与 xPath 介绍
- C#操作xml SelectNodes,SelectSingleNode总是返回NULL 与 xPath 介绍
- C#操作XML文档(XmlDocument、XmlNode、XmlAttribute、SelectSingleNode、SelectNodes、XmlNodeList)
- C#操作XML文档(XmlDocument、XmlNode、XmlAttribute、SelectSingleNode、SelectNodes、XmlNodeList)
- 一. SelectNodes,SelectSingleNode总是返回NULL
- C#操作XML文档(XmlDocument、XmlNode、XmlAttribute、SelectSingleNode、SelectNodes、XmlNodeList)
- C#操作XML文档(XmlDocument、XmlNode、XmlAttribute、SelectSingleNode、SelectNodes、XmlNodeList)