【问题标题】:Querying Same Named Elements with XPath使用 XPath 查询同名元素
【发布时间】:2012-01-20 13:26:34
【问题描述】:

我编写了一个 Xpath 查询来查找具有包含字符串的 nodeValue 的元素。

/campaigns/campaign[contains("7218322441485795", creative_id)] 

但是,我查询的 XML 有多个 <creative_id> 元素;

<campaigns>
    <campaign>
        <creative_id>41485795</creative_id>
        <creative_id>41485759</creative_id>
        <creative_id>41485694</creative_id>
        <resources>
        ....

问题是查询只评估第一个 creative_id 元素,而不是第二个和第三个。

如何编写 XPath 查询以不限于第一个 creative_id 元素?

【问题讨论】:

  • 如何调用这个 XPath 查询?
  • 您是否打算以这种方式对contains 的参数进行排序?您当前正在该字符串中查找creative_id 的值,而不是creative_id 中该字符串的值。
  • @lwburk - 是的,我正在比较的查询字符串实际上是 16 位数长。这只是我关心评估的最后 8 个。
  • 你可以看看这个:stackoverflow.com/a/3470779/592746

标签: xml xpath


【解决方案1】:

当在第一个参数中找到第二个参数的字符串值时,XPath contains 函数返回 true。您的订单似乎可疑。您当前在给定字符串中查找creative_id 的字符串值,而不是creative_id 中该字符串的值。

假设参数排序正确,如果以下表达式的任何creative_id 子元素与提供的字符串的一部分匹配,则以下表达式将返回campaign 元素:

/campaigns/campaign[creative_id[contains("7218322441485795", .)]]

【讨论】:

  • 太棒了!我不知道有多少次我接近相同的解决方案。谢谢。
猜你喜欢
  • 1970-01-01
  • 2015-11-15
  • 2020-10-15
  • 1970-01-01
  • 2014-12-14
  • 1970-01-01
  • 1970-01-01
  • 2020-05-19
  • 1970-01-01
相关资源
最近更新 更多