gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 02:21:04 26 4
gpt4 key购买 nike

我有以下示例 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。不是我要找的(我要选择“Next”节点的内容。

但是如果我从 XML 中取出 xmlns="abbr:SomeNSValue 然后再试一次,我就会得到我要找的东西:

<Other>SomeValue</Other>

在我的真实场景中,我收到了 XML,我宁愿不必修改它来取消命名空间。

有没有一种方法可以使它与其中的命名空间一起工作?

注意:如果重要的话,这是我的 XML 文件中的实际命名空间:xmlns="urn:hl7-org:v2xml"

最佳答案

你的命名空间声明是错误的:

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

当你做这个神奇的改变时,你的代码的其余部分就可以工作了:)..

关于c# - 如何读取具有命名空间的 XPathDocument,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8363975/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com