XPath 在不同元素上有多个包含

Posted

技术标签:

【中文标题】XPath 在不同元素上有多个包含【英文标题】:XPath with multiple contains on different elements 【发布时间】:2013-09-04 00:56:39 【问题描述】:

是否可以让XPath 表达式包含多个包含不同元素值的内容?

XML

<data>
   <person>
      <firstname>Kerry</firstname>
      <lastname>Packer</lastname>
      <address>Crown</address>
   <person>
   <person>
      <firstname>Kerry</firstname>
      <lastname>Murdoch</lastname>
      <address>California</address>
   <person>
<data>

PHP

$xml = simplexml_load_string($data);
$elements = $xml->xpath("(//person)[firstname[contains(., 'Kerr')]] and [lastname[contains(., 'och')]]");

当前上面的XPath 表达式被标记为无效。但是,如果我将它与一个元素一起使用,

$xml->xpath("(//person)[firstname[contains(., 'Kerr')]]"); 

然后它就可以正常工作了。

【问题讨论】:

【参考方案1】:

你只是想要

//person[contains(firstname, 'Kerr') and contains(lastname, 'och')]

【讨论】:

我们也可以在搜索中使用“或”子句。

以上是关于XPath 在不同元素上有多个包含的主要内容,如果未能解决你的问题,请参考以下文章

在xpath搜索中使用通配符

按文本查找元素并获取xpath - selenium webdriver junit

处理具有相同 XPath 的多个 XML 元素

xpath按元素和属性查找节点,其中包含具有特定id的子元素

python - 查找包含字符串的元素的xpath

XPath:在进行翻译和规范化空间时查找包含精确文本的元素