C#中读取带有Xmlns命名空间的XML文件

XML文件格式如下:

<?xml version="1.0" encoding="utf-8"?>
<Resume xmlns="http://ns.test.com/resumes">
  <PersonalInformation>
    <GeneralInformation>
      <Name><![CDATA[张三]]></Name>
      <Birthday>1978-06</Birthday>
      <Gender>男</Gender>
    </GeneralInformation>

  </PersonalInformation>

</Resume>

由于这个XML文件加了Xmlns命名空间,如果直接用xxx.SelectSingleNode("PersonalInformation/GeneralInformation/Name"),结果返回null;

解决办法:

                XmlReaderSettings xs = new XmlReaderSettings();
                xs.XmlResolver = null;
                xs.ProhibitDtd = false;               
                XmlReader xr = XmlReader.Create(sourceFile, xs);
                XmlDocument doc = new XmlDocument();
                doc.Load(xr);//载入源XML文件

                XmlNamespaceManager nameSpace = new XmlNamespaceManager(doc.NameTable);
                nameSpace.AddNamespace("abc", "http://ns.test.com/resumes");
               

                XmlElement resume = doc.DocumentElement;

               //读取节点内容(要在节点前加命名空间前缀,如本例"abc:")

               resume.SelectSingleNode("abc:PersonalInformation/abc:GeneralInformation/abc:Name", nameSpace).InnerText.Trim()

转载于:https://www.cnblogs.com/anny-1980/articles/1421088.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值