0

我在下面有一个 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 的年龄和姓名

XmlNodeList outcomelist = each.SelectNodes(".//*[local-name()='persons']/*[local-name()='Number']");

“每个”是当前节点。

请帮助正确编写 xpath,以便我只能获取当前节点的值并排除子节点。

请注意,此 xml 仅用于示例目的。真正的 xml 非常大且解析起来很繁琐。

4

1 回答 1

0

我认为您需要花一些时间来熟悉 XPath,因为您正在使用诸如 and 之类的“任何可行的”技术//*[local-name() = '...']这会给您带来麻烦。

要选择顶层persons,这个 XPath 应该可以工作:

XmlNodeList persons = each.SelectNodes("/Root/persons/Number");

如果您的 XML 使用命名空间,那么您可以这样做来选择名称:

XmlNodeList age = 
  each.SelectNodes("/*/*[local-name() = 'persons']/*[local-name() = 'Number']");

但正如我上面提到的,这是一个 hack,在这种情况下你真正应该做的是正确处理命名空间。

于 2014-05-26T10:56:01.520 回答