php - How to get xml node value by attribute value with simplexml? -
i've got xml generated external service looking this:
<data> <eventlist> <events> <event id="123"> <eventdescription lang="de">description_de</eventdescription> <eventdescription lang="en">descrition_en</eventdescription> </event> <event id="456"> <eventdescription lang="de">description_de</eventdescription> <eventdescription lang="en">descrition_en</eventdescription> </event> </events> </eventlist> </data> i'm loading xml simplexml , loop on events:
$responsexml = simplexml_load_file($requesturl); $lang = 'de'; foreach($responsexml->eventlist->events->children() $event){ // eventdescription } now want string/text ofthe eventdescription every event in right language based on $lang variable. if it's set de want descriptions attribute lang="de".
i've tried
echo( $event->eventdescription[0]); which kinda works (assuming de , en in same order), using var_dump reveals, it's not string only
array (size=1) 0 => object(simplexmlelement)[3] public '@attributes' => array (size=1) 'lang' => string 'de' (length=2) public 0 => string 'description_de' (length=14) so how string of eventdescription node? there better way make language selection should languages not in same order?
answered elsewhere, use xpath:
$events = $responsexml->xpath('//data[eventlist[events[event[eventdescription[@lang="de"]]]]]');
Comments
Post a Comment