2010-08-10 20 views
6

Ho un file XMLcondizione di implementazione in 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> 

E Sto usando questo XPath per selezionare i nodi

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

selezionerà tutte le nodes.I vogliono selezionare i nodi basati alla data.

risposta

7

Indicare la data nella espressione XPath,

cioè

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

sarebbe selezionare solo gli ultimi avvenimenti nodo nell'esempio

4

Usa

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

per ottenere il nodo evento sotto il nodo xml con la data specificata e

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

per ottenere tutti gli eventi sotto i nodi del nodo xml con un attributo di data. Allo stesso modo, utilizzare

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

per trovare tutti i nodi degli eventi in qualsiasi parte del documento con un attributo di data che contiene la stringa "2011".

Su un sidenote, è possibile utilizzare simplexml_load_file per caricare direttamente un file XML.