加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 如何读取具有命名空间的XPathDocument

发布时间:2020-12-16 01:49:39 所属栏目:百科 来源:网络整理
导读:我有以下示例 XML文件: Top xmlns="abbr:SomeNSValue" Next OtherSomeValue/Other /Next/Top 我加载它并试着像这样读取它: FileStream stream = new FileStream(@".TestXML.xml",FileMode.Open);XPathDocument xPathDocument = new XPathDocument(stream)
我有以下示例 XML文件:

<Top xmlns="abbr:SomeNSValue">
  <Next>
    <Other>SomeValue</Other>
  </Next>
</Top>

我加载它并试着像这样读取它:

FileStream stream = new FileStream(@".TestXML.xml",FileMode.Open);
XPathDocument xPathDocument = new XPathDocument(stream);
XPathNavigator navigator = xPathDocument.CreateNavigator();

XmlNamespaceManager ns = null;
if (navigator.NameTable != null)
{
    ns = new XmlNamespaceManager(navigator.NameTable);
    ns.AddNamespace("abbr","SomeNSValue");
}

XPathNodeIterator iterator = navigator.Select("/Top/Next",ns);
iterator.MoveNext();

Console.WriteLine(iterator.Current.InnerXml);

这将输出上面显示的完整XML.不是我想要的(我想选择“下一步”节点的内容.

但是,如果我从XML中取出xmlns =“abbr:SomeNSValue并重试,那么我得到了我想要的东西:

<Other>SomeValue</Other>

在我的真实场景中,我将XML提供给我,我宁愿不必修改它以取消命名空间.

有没有办法让它可以使用命名空间?

注意:重要的是这是我在XML文件中的实际命名空间:xmlns =“urn:hl7-org:v2xml”

解决方法

你的命名空间声明错误:

<Top xmlns:abbr="SomeNSValue">
  <Next>
    <Other>SomeValue</Other>
  </Next>
</Top>

当你做这个神奇的改变代码的其余部分工作:) ..

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读