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

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