2011-01-27 13 views
6

exmple alimentación: Vista de código: http://rss.packetstormsecurity.org/files/tags/exploit/texto de ajuste con la sintaxis XPath

sólo quiero volver secciones de XML en el que el nodo de título de los padres ha texto coincidente en que, en este ejemplo el texto para que coincida es "sitio" .

//get feed with curl 

$doc = new SimpleXmlElement($xml, LIBXML_NOCDATA); 

//$result = $doc->xpath('//title'); //this works returns all the <title>'s 

$result = $doc->xpath('//title[site]');      //doesn't work 
$result = $doc->xpath('//title[text()="site"]');   //doesn't work 
$result = $doc->xpath('//title[contains(site)]');   //doesn't work 
$result = $doc->xpath('//title[contains(text(),'Site')]'); //doesn't work 


foreach ($result as $title) 
echo "$title<br />" 

Respuesta

19

La llamada que necesita es, creo, esto:

$result = $xpath->query('//title[contains(.,"Site")]'); 

Tenga en cuenta que esto es entre mayúsculas y minúsculas.

Tenga en cuenta que la función XPath contains toma dos argumentos: un pajar y una aguja. En este caso, estamos utilizando el valor de texto del nodo actual como el pajar, que se indica mediante el uso del punto (.).

+0

+1 Corregir respuesta. Usted escribió * "estamos usando el nodo actual" *. Pero la función 'fn: contains()' espera dos argumentos de tipo de datos de cadena, por lo que 'self :: node()' abreviada sintaxis ('.') se convertirá en función' fn: string() ', devolviendo su ** cadena value **: concatenación de todos los nodos de texto descendentes. –

Cuestiones relacionadas