webForumDet fria alternativet

Läsa "skum" xml fil

PHP

1 svar · 500 visningar · startad av Flow

Medlem sedan dec. 200283 inlägg
Frågan#1

Hej!

Håller på att försöka läsa in en xml-fil som genereras av ett program; tyvärr är kodningen på xml-filen inte riktigt som den skall vara och det kan jag tyvärr inte göra någonting åt...

XML filen ser ut såhär (förenklad)

<?xml version="1.0"?>
<CueList >
<Event eventID="15" eventType="song" elementSpecificData="0" status="happening" timing="none" startOffset="0.00" scheduledTime="15:22:19" scheduledDuration="239.20" segue="xfade" failureCode="0" editCode="5" outputChannel="B">
<s:Song title="UMBRELLA" ID="   2759" category="P">
<s:SongAdditional radioText=""/>
<s:Artist name="RIHANNA" internalID="006700000015DA000000"/>
<s:Artist name="JAY-Z" internalID="006700000015D4090000"/>
<m:Media runTime="239.20"/>
</s:Song>
</event>
</CueList>

Det finns 3-4 st <event> i filen och det jag vill få ut ur exemplet ovan; "RIHANNA", "JAY-Z". Alltså den första event-taggens info.

Nån som har någon idé? Har prövat med lite olika xml-parsers fast de ger mig tom info eftersom själva "value" är tom...

//Andreas

Medlem sedan mars 20007 896 inlägg
#2
$yourxmlstring = file_get_contents($yourxmlfile);
$sxml = new SimpleXMLElement($yourxmlstring);

for($i = 0; $i < count($sxml->Event); $i++) {
     $ns = $sxml->Event[$i]->children('s');
     for($n = 0; $n < count($ns->Artist); $n++) {
          echo $ns->Artist[$n]->attributes['name'];
     }
}

Helt oprövat. SimpleXML är tyvärr inte så jäkla bra på att hantera namnrymder, men är - i min mening - den enklaste XML-parser/XML-readern att använda i PHP.

256 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)