XPath with multiple contains on different elements

谁说胖子不能爱 提交于 2019-11-30 03:17:32

问题


Is it possible to have XPath expression with multiple contains of different element values?

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')]]");

Currently above XPath expression is flagged as invalid. However if I use it with one element,

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

then it works fine.


回答1:


You simply want

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


来源:https://stackoverflow.com/questions/18547410/xpath-with-multiple-contains-on-different-elements

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!