XML Xpath - 选择其中元素 = 多个值

标签 xml xpath multiple-conditions

相当直截了当的问题,但似乎很难通过此处或 Google 搜索找到我想要的内容。

大多数人问如何选择具有多个条件的节点/元素。

喜欢 URL/books[title="Harry Potter"and author="JKRowling"]

如果您对一个属性有多种可能性,我想知道是否有一种方法可以缩短该语法。

换句话说

URL/books[price=1 or price=2 or price=3 or price=8 or price=15]

有没有办法缩短该语法?

URL/books[price=1,2,3][price in (1,2,3)] ---- 显然这些都是错误的,但会让事情变得更容易。

最佳答案

XPath 2.0 将允许

URL/books[price=(1,2,3)]

= XPath 中的运算符(以及 !=<><=>= )在其操作数中的一个或两个都是序列时具有隐式存在量词 - X = Y如果序列 X任何 成员为真等于序列 Y任何成员.请注意,这意味着 X != Y不一定与 not(X = Y) 相同- 前者意味着有一些对不相等的 X 和 Y 值(并且可能还有其他对相等),后者意味着没有 完全相等。

但是 XPath 1.0 不支持这样的原子值序列,它唯一的多值数据类型是节点集。如果您能以某种方式将值列表作为 XML 注入(inject)一个变量,例如

<prices>
  <price>1</price>
  <price>2</price>
  <price>3</price>
</prices>

那么你可以说

URL/books[price = $var/prices/price]

但是 (a) 取决于您的 XPath 引擎是否以及如何支持变量绑定(bind),并且 (b) 可能不如仅枚举 price = 1 or price = 2 ... 清楚无论如何。

关于XML Xpath - 选择其中元素 = 多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26387254/

相关文章:

java - 在 Android 中以编程方式添加 View

android - 如何确定 Android UI 元素的 XPATH。 Selenium +Appium

scala - 根据 Spark 结构化流中的多个条件更新其他列的列值

c - for 循环中的多个条件 - C

python - 根据另一个数据帧的多个列条件创建列

xml - 在 SQL Server 2008 中使用 XQuery 搜索内容

java - 为什么 web.xml 中的 servlet 配置有 1 个额外级别?

c# - 将 XML 数据放入 Windows 事件日志

java - Xpath 获取 href 标签中匹配文本的第二个 url

xpath - 有没有办法获取其子值不等于另一个子轴的节点?