2010-08-10 8 views
6

Tengo un archivo XMLcondición de ejecución en XPath

<?xml version="1.0" encoding="UTF-8"?> 
<xml> 
    <events date="12/12/2010"> 
    <event> 
     <title>JqueryEvent</title> 
     <description> 
     easily 
     </description> 
    </event> 
    </events> 
    <events date="14/12/2011"> 
    <event> 
     <title>automatically onBlur</title> 
     <description> 
     when a date is selected. For an inline calendar, simply attach the datepicker to a div or span. 
     </description> 
    </event> 
    </events> 
</xml> 

y estoy usando este XPath para seleccionar los nodos

$xml = simplexml_load_file($file); 
$nodes = $xml->xpath('//xml/events'); 

Se seleccionará todos quieren que el nodes.I para seleccionar los nodos basados En la cita.

Respuesta

7

especificar la fecha en la expresión XPath,

es decir

$nodes = $xml->xpath('//xml/events[@date="14/12/2011"]'); 

sería seleccionar sólo la última eventos-nodo en el ejemplo

4

Uso

$xml = simplexml_load_string($xml); 
$nodes = $xml->xpath('//events[@date="14/12/2011"]'); 
print_r($nodes); 

para obtener el nodo de evento debajo del nodo xml con la fecha especificada y

$xml = simplexml_load_string($xml); 
$nodes = $xml->xpath('//xml/events[@date]'); 
print_r($nodes); 

para obtener todos los eventos debajo de los nodos de nodo xml que tengan un atributo de fecha. Del mismo modo, utilizar

$xml = simplexml_load_string($xml); 
$nodes = $xml->xpath('//events[contains(@date, "2011")]'); 
print_r($nodes); 

para encontrar todos los nodos de eventos en cualquier parte del documento con un atributo de fecha que contiene la cadena "2011".

En una nota al margen, puede usar simplexml_load_file para cargar un archivo XML directamente.