PHP Query XML with xPath

Annasuper

New Member
I have an XML Structure like the following:\[code\]<Tickets><EventsPoints> <Event ID="23"> <PerformanceName>U2</PerformanceName> <EventDate>25/05/2012</EventDate> <EventPrice>75.00</EventPrice> </Event> <Event ID="27"> <PerformanceName>Jedward</PerformanceName> <EventDate>28/05/2012</EventDate> <EventPrice>20.00</EventPrice> </Event> <Event ID="27"> <PerformanceName>Rolling Stones</PerformanceName> <EventDate>03/12/2012</EventDate> <EventPrice>80.00</EventPrice> </Event></EventsPoints></Tickets>\[/code\]Basically I want to search this XML for a certain performance name, say "U2", and then return that entire XML block (i.e. that performance name, event date and price - all in formatted XML and saved in a separate xml file)This is my php code but it doesn't seem to be extracting the data correctly:\[code\]$srcDom = new DOMDocument;$srcDom->load('/var/www/html/xml/searchfile.xml');$xPath = new DOMXPath($srcDom);foreach ($srcDom->getElementsByTagName('Event') as $event) { $dstDom = new DOMDocument('1.0', 'utf-8'); $dstDom->appendChild($dstDom->createElement('EventsPricePoints')); $dstDom->documentElement->appendChild($dstDom->importNode($event, true)); $allEventsForVenue = $xPath->query( sprintf( '/Tickets/EventsPoints/Event/PerformanceName[.="U2"]' ) ); foreach ($allEventsForVenue as $event) { $dstDom->documentElement->appendChild($dstDom->importNode($event, true)); } $dstDom->formatOutput = true; $dstDom->save(sprintf('/var/www/html/xml/searchresults1.xml'));}\[/code\]
 
Back
Top