【问题标题】:List unique elements of XML using XPath使用 XPath 列出 XML 的唯一元素
【发布时间】:2014-07-16 20:28:10
【问题描述】:

我在这里有一个要求,我会尽量保持简单,

我有一个 XML 格式的原始信息:

23苹果> 12芒果> 10橙> 19苹果>

我只想得到其中独特的水果。 (苹果、芒果和橙子)

任何人都可以编写一个 XPath 来检索它吗? 状态:未答复

你可以作为 cmets 给出你的答案

提示: 如果 XML 如下所示

23苹果> 19苹果> 12芒果> 10橙>

这个 XPath 可以工作

//MyFruits/[not(name(.)=name(following-sibling::))]

【问题讨论】:

标签: xml xpath


【解决方案1】:

检查前面的兄弟是否有相同的名字,而不是后面的兄弟。这样一来,第一次遭遇将被输出,而不是任何后续遭遇。

/MyFruits/name(.)[not(name(.)=name(preceding-sibling::*)]

【讨论】:

  • 不起作用 - name(preceding-sibling::*) 为您提供了一个特定节点的名称(上下文节点的前一个兄弟节点,在文档顺序中排在第一位),它不提供与每个前一个节点进行比较的方法兄弟姐妹轮流。
  • preceding-sibling::* 将为您提供所有前面的兄弟姐妹,而 preceding-sibling::*[1] 将为您提供第一个前面的兄弟姐妹。
  • 是的,preceding-sibling::* 会给你一个包含所有前面的兄弟元素的节点集。如果您将name 函数应用于此类节点集,那么 XPath 1.0 将按文档顺序为您提供该集中第一个节点的名称并忽略其他节点,如果该集包含 XPath 2.0 将给您一个类型错误多个节点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多