Reputation: 2672
I have the following XML file:
<transcript_list docid="6678351850933011277">
<track id="1" name="" lang_code="en-GB" lang_original="English (United Kingdom)" lang_translated="English (United Kingdom)" lang_default="true"/>
<track id="2" name="" lang_code="fr" lang_original="Français" lang_translated="French"/>
<track id="3" name="" lang_code="de" lang_original="Deutsch" lang_translated="German"/>
</transcript_list>
As of now, this is the code I got so far:
$sxml = simplexml_load_string($xml);
if ($attrs = $sxml->track->attributes()) {
$attrs = $sxml->track->attributes();
//GET lang_code
$language = $attrs["lang_code"];
//GET name
$name = $attrs["name"];
//GET lang_original
$lang_original = $attrs["lang_original"];
//GET lang_translated
$lang_translated = $attrs["lang_translated"];
}
// ECHO values
echo "Language: ".$language." | Name: ".$name." | Language Original:".$lang_original." | Language Translated: ".$lang_translated;
Above PHP code works just fine for me, but it only prints the first line of the attributes.
How do I do the loop to echo all lines of the XML file?
Thanks.
Upvotes: 0
Views: 69
Reputation: 23880
You need to loop over the track
s.
foreach($sxml->track as $track) {
if ($attrs = $track->attributes()) {
$language = $attrs["lang_code"];
$name = $attrs["name"];
$lang_original = $attrs["lang_original"];
$lang_translated = $attrs["lang_translated"];
echo "Language: ".$language." | Name: ".$name." | Language Original:".$lang_original." | Language Translated: ".$lang_translated . "\n";
}
}
Demo: https://eval.in/665762
Also note if ($attrs = $sxml->track->attributes()) {
assigns $sxml->track->attributes()
to $attrs
so you don't need to do that a second time.
Upvotes: 2