Ich möchte eine Funktion schreiben, die eine (theoretisch) unbekannte XML-Datenstruktur in ein äquivalentes PHP-Array parst.Iterieren über unbekannte XML-Struktur mit PHP (DOM)
Hier ist mein Beispiel XML:
$data = 'path/to/xmldoc.xml';
$xmlDoc = new DOMDocument(); #create a DOM element
$xmlDoc->load($data); #load data into the element
$xmlRoot = $xmlDoc->firstChild; #establish root
function xml2array($node)
{
if ($node->hasChildNodes())
{
$subNodes = $node->childNodes;
foreach ($subNodes as $subNode)
{
#filter node types
if (($subNode->nodeType != 3) || (($subNode->nodeType == 3)))
{
$arraydata[$subNode->nodeName]=$subNode->nodeValue;
}
xml2array($subNode);
}
}
return $arraydata;
}
//The getNodesInfo function call
$xmlarray = xml2array($xmlRoot);
// print the output - with a little bit of formatting for ease of use...
foreach($xmlarray as $xkey)
{
echo"$xkey<br/><br/>";
}
Nun, wegen der Art, wie ich die Elemente in das Array vorbei bin ich:
<?xml version="1.0" encoding="UTF-8"?>
<content>
<title>Sample Text</title>
<introduction>
<paragraph>This is some rudimentary text</paragraph>
</introduction>
<description>
<paragraph>Here is some more text</paragraph>
<paragraph>Even MORE text</paragraph>
<sub_section>
<sub_para>This is a smaller, sub paragraph</sub_para>
<sub_para>This is another smaller, sub paragraph</sub_para>
</sub_section>
</description>
</content>
ich dieses DOM Iterieren Funktion von devarticles geändert m alle Elemente überschreiben, die einen Knotennamen teilen (da ich den Schlüsseln im Idealfall die gleichen Namen geben möchte wie ihre Ausgangsknoten). Meine Rekursion ist nicht großartig ... Aber selbst wenn ich die Klammern lease - die zweite Schicht der Knoten kommen immer noch als Werte auf der ersten Stufe (siehe den Text der Beschreibung Knoten).
Wer hat irgendwelche Ideen, wie ich das besser konstruieren kann?
das funktioniert ein Leckerbissen - Problem gelöst! – sunwukung