Hallo,
bin gerade dabei eine XML-Datei zu parsen, finde aber nicht die richtige Vorgehensweise. Habe auch noch nie XML geparst, aber mich schon mal mit den Grundlagen beschäftigt.
Ich versuche mal das Problem zu beschreiben. Die XML-Datei besteht im Wesentlichen aus Objekten die durch ein "struct" beschrieben werden. Jedes struct enthält dabei lauter "member" die wiederum name und value Elemente beinhalten.
Nun habe ich mit dem XMLReader die Elemente iteriert und nach structs gesucht. Wurde ein struct gefunden, so habe ich mit dem DOM weitergemacht um aus dem struct die Daten auszulesen. Hat auch wunderbar geklappt. Nun habe ich ein XML-Dokument mit verschachtelten structs. Es kommt also vor, dass ein value Element selbst ein struct enthält. Und jetzt komme ich mit meiner Strategie nicht mehr weiter. Ich muss ja irgendwie unterscheiden können, ob es sich nun um ein inneres struct handelt, oder nicht.
Ist ein wenig schwer zu erklären, ohne es zu zeigen.
Hier ist noch ein Code-Auszug:
Und die XML-Datei die geparst werden soll.
Hat jemand eine Idee? Vielleicht auch ne ganz andere Vorgehensweise? Hauptsache ich komme an die Daten.
Danke und Gruß
unit1
bin gerade dabei eine XML-Datei zu parsen, finde aber nicht die richtige Vorgehensweise. Habe auch noch nie XML geparst, aber mich schon mal mit den Grundlagen beschäftigt.
Ich versuche mal das Problem zu beschreiben. Die XML-Datei besteht im Wesentlichen aus Objekten die durch ein "struct" beschrieben werden. Jedes struct enthält dabei lauter "member" die wiederum name und value Elemente beinhalten.
Nun habe ich mit dem XMLReader die Elemente iteriert und nach structs gesucht. Wurde ein struct gefunden, so habe ich mit dem DOM weitergemacht um aus dem struct die Daten auszulesen. Hat auch wunderbar geklappt. Nun habe ich ein XML-Dokument mit verschachtelten structs. Es kommt also vor, dass ein value Element selbst ein struct enthält. Und jetzt komme ich mit meiner Strategie nicht mehr weiter. Ich muss ja irgendwie unterscheiden können, ob es sich nun um ein inneres struct handelt, oder nicht.
Ist ein wenig schwer zu erklären, ohne es zu zeigen.
Hier ist noch ein Code-Auszug:
PHP-Code:
while ( $this->reader->read() ) {
if ( $this->reader->name == "struct" &&
$this->reader->nodeType == XMLReader::ELEMENT ) {
/* struct gefunden, DOM-Object aus der Node machen */
$DOMNode = $this->reader->expand();
// ...
}
Code:
<struct> <member><name>data</name> <value><string>data</string></value> </member> <member><name>data</name> <value><int>data</int></value> </member> <member><name>data</name> <value> <struct> <member><name>data</name> <value><string>data</string></value> </member> <member><name>data</name> <value><string>data</string></value> </member> </struct> </value> </member> </struct>
Danke und Gruß
unit1
Kommentar