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

Popular posts from this blog

python - Operations inside variables -

Generic Map Parameter java -

arrays - What causes a java.lang.ArrayIndexOutOfBoundsException and how do I prevent it? -