XPath with multiple包含在不同的元素上

时间:2013-08-31 11:01:29

标签: php xml xpath simplexml contains

是否可以使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 个答案:

答案 0 :(得分:23)

你只想要

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