【问题标题】:get the xmlnode value获取 xmlnode 值
【发布时间】:2014-05-26 10:41:17
【问题描述】:

我在下面有一个 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 非常大,解析起来很繁琐。

【问题讨论】:

  • 那么您是说要获取任何顶级persons 下的Numbers 的值,而不是后代的值?
  • 是的,这是正确的..

标签: xml xpath xmlnode xmlnodelist


【解决方案1】:

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

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

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

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

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

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

【讨论】:

  • 嗨,感谢您的回复。我的问题本身与我所面临的情况不匹配。实际上嵌套了多个节点。我现在已经编辑了问题。你能帮忙吗?提前致谢。
  • @Arpit 更新了我的答案。
猜你喜欢
  • 2020-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多