gpt4 book ai didi

c# - SelectSingleNode 返回错误的 Node 实例值

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

我正在解析一些 XML。我正在遍历 2 个 Pit 节点并尝试找出它们的 x 节点值。

我的问题: 当我检查每个 Pit 节点 x 值时,它总是说值是 8,当第二个节点x的值实际上是1

为什么会发生这种情况,我该如何解决?

XmlNodeList xNodes = xdoc.DocumentElement.SelectNodes("//ns:pits", nsmgr);

foreach (XmlNode pit in xNodes) {
XmlNode x = pit.SelectSingleNode("//ns:x", nsmgr);
MessageBox.Show(x.InnerText, ""); // Always prints "8", when 1 should be "8", another "1"
}

我正在使用的数据:

<?xml version="1.0"?>
<xml12d>
<pit>
<x>8.89268569</x>
<y>1.26122586</y>
<z>1.62414621</z>
</pit>
<pit>
<x>1.09268598</x>
<y>7.24091243</y>
<z>8.20896044</z>
</pit>
</xml12d>

最佳答案

XPath // 是一个 abbreviated syntax从文档根目录中选择任何后代。 //ns:x 将选择文档中的每个 ns:x -- 它的范围不限于其作为根的父节点 -- 因此将它与 SelectSingleNode 将始终选择文档中的第一个 ns:x

如果您将 XPath 更改为简单的 ns:x,这将只选择 child ns:x,它应该可以工作。

您实际上可以通过修改第一个选择 //ns:pits/ns:x[1] 来摆脱第二个 XPath 调用,这将选择第一个 ns:x 文档中每个 ns:pits 的 child 。

关于c# - SelectSingleNode 返回错误的 Node 实例值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18627428/

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