XML Datei in PHP Array umwandeln

Sprint

Erfahrenes Mitglied
Hallo zusammen,

bis jetzt konnte ich mich um XML immer erfolgreich drücken, aber jetzt kann ich nicht mehr ausweichen. Da wir bei uns sehr viele UID Abfragen beim BZSt haben, sollen die Abfragen in Zukunft über deren Schnittstelle laufen. Der Ausfruf ist ja auch ganz einfach, die Antwort kommt aber als XML Quelltext. Ich habe mich jetzt mal versucht in die XML Befehle von PHP einzudenken, aber durch die vielen Stufen erzeugt mir xml_parse_into_struct() eine riesige Anzahl von Arrays, bei denen ich keine Ahnung habe, wie ich da die tatsächlichen Ergebnisse rausholen soll.

Der Quelltext sieht so aus (Ausschnitt)

XML:
<params>
<param>
<value><array><data>
<value><string>Datum</string></value>
<value><string>27.07.2006</string></value>
</data></array></value>
</param>
<param>
<value><array><data>
<value><string>Uhrzeit</string></value>
<value><string>13:35:53</string></value>
</data></array></value>
</param>
<param>
<value><array><data>
<value><string>ErrorCode</string></value>
<value><string>200</string></value>
</data></array></value>
</param>
</params>
Wie bekomme ich aus diesem ganzen Wust ein einfaches PHP Array, das so aussehen sollte
PHP:
$array  = ["Datum" => "27.07.2006", "Uhrzeit" => "13:35:53", "ErrorCode" => "200"];

Gibt es dafür eine einfache Lösung oder muß ich da den ganzen Text von den überflüssigen Tags befreien und dann zu Fuß umwandeln?

Danke schon mal,
Sprint
 
Wenn da wirklich die Struktur wirklich immer so ist wird es halb so kompliziert:

PHP:
<?php
$doc=new DOMDocument;
$doc->loadXML('der XML string');
//NodeList mit <param> erzeugen
$params=$doc->getElementsByTagName('param');
$arr=array();
//die NodeList durchlaufen und array befüllen
for($p=0;$p<$params->length;++$p){
$arr[$params->item($p)->getElementsByTagName('string')->item(0)->nodeValue] =
    $params->item($p)->getElementsByTagName('string')->item(1)->nodeValue;
}


?>


http://codepad.org/TagFAWbr
 

Neue Beiträge

Zurück