XPath with multiple elements contains different elements

Is it possible to have an XPath expression with multiple values โ€‹โ€‹containing different elements?

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

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

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

then it works great.

+7
contains xml php xpath simplexml
source share
1 answer

You just want

 //person[contains(firstname, 'Kerr') and contains(lastname, 'och')] 
+19
source share

All Articles