我下面有一个xml 首先,我将选择一个SelectNode。然后我想在两个选定的节点上做一个foreach,然后分别为每个节点选择。
<Root>
<persons>
<Number>2525</Number>
<Number>2626</Number>
<persons>
<Number>2828</Number>
<Number>2929</Number>
</persons>
</persons>
</Root>
第一次运行foreach时,我使用Xpath =
获取Arpit和Tushar的Age和NameXmlNodeList outcomelist = each.SelectNodes(".//*[local-name()='persons']/*[local-name()='Number']");
“each”是当前节点。
请帮助正确编写xpath,以便我只能获取当前节点的值并排除子节点。
请注意,这个xml仅用于示例目的。真正的xml非常庞大且难以解析。
答案 0 :(得分:0)
我认为您需要花些时间熟悉XPath,因为您正在使用“{1}}和//
等”工作原理“,这会让您遇到麻烦。
要选择顶级*[local-name() = '...']
,此XPath应该有效:
persons
如果您的XML使用名称空间,那么可以执行此操作以选择名称:
XmlNodeList persons = each.SelectNodes("/Root/persons/Number");
但正如我在上面提到的,这是一个黑客攻击,在这种情况下你应该真正做的是正确处理名称空间。