PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : XML parsen ohne DOM Lib



Philipp7
18-04-2006, 16:49
Hi zusammen,

ich suche (da ich das Rad nicht neu erfinden will) eine Klasse für PHP 4 (also nicht SimpleXML etc..), die mir ein XML-File in ein assoziatives Array parst.
So und jetzt kommt das ABER :-)
Bei xml_parse_into_struct ist das Array für mich nicht zu gebrauchen.
Eigentlich brauche ich genau das Output-Array, was man mit der DOMLib erzeugen kann.

Also


<?xml ...>
<liste>
<person>
<name>bla</name>
</person>
<person>
<name>blub</name>
</person>
</liste>


Array:


liste = Array (
person = Array (
[0] => Array (name => "bla")
[1] => Array (name => "blub")
)
)


Was in den x-hundert Beispielklassen immer gemacht wird, ist für meine Zwecke eher unbrauchbar:
Hier werden immer vordefinierte Array-Keys verwendet wie "PARENT" oder "ATTRIBUTE" oder "ELEMENT" (Beispiele siehe php.net unter "xml-Functions"), was in meinen Augen keine exakte Umsetzung in ein assoziatives Array ist, sondern eben ein selbstgebasteltes. Ich brauche aber die exakte Umsetzung.


Ein Rohgerüst der Klasse habe ich, es hapert eher an der Logik von Start- und Endelement Funktionen.... Damit auch wirklich ein sauberes assoziat. Array rauskommt.

.... konnte mir jemand folgen ? ;)

Es grüßt,
Philipp7

Romanday
18-04-2006, 19:19
Hi zusammen,
Ein Rohgerüst der Klasse habe ich, es hapert eher an der Logik von Start- und Endelement Funktionen.... Damit auch wirklich ein sauberes assoziat. Array rauskommt.

.... konnte mir jemand folgen ? ;)

Es grüßt,
Philipp7

Ja, ich folge dir...:D
Schau dir mal die preg_.+() funktionen an.

http://www.php.net/manual/en/ref.pcre.php

Damit kannst du dir alles nach deinen Wünschen zusammenschneiden.
Die ganzen XML Klassen machen auch nix anderes.

Philipp7
18-04-2006, 19:54
Hi,

ja preg_.+ hatte ich mir schon gedacht, bin aber mal "spontan" davon ausgegangen, dass ich bei XML Files mit mehreren DIN A4 Seiten damit sicherlich Probleme bekomme, allein schon performancemässig.
Zudem fände ich die Lösung nicht so "sauber" wie ein echtes Parsen.
Hast Du noch einen weiteren Tipp?

Turbohummel
18-04-2006, 20:21
Das ist "echtes Parsen", was anderes machen die XML-Zerschnipplser auch nicht.

Romanday
18-04-2006, 20:50
Hi,

ja preg_.+ hatte ich mir schon gedacht, bin aber mal "spontan" davon ausgegangen, dass ich bei XML Files mit mehreren DIN A4 Seiten damit sicherlich Probleme bekomme, allein schon performancemässig.
Zudem fände ich die Lösung nicht so "sauber" wie ein echtes Parsen.
Hast Du noch einen weiteren Tipp?

Ich kann mit echt unecht nix anfangen.:D
Wenn es schneller gehen soll, schreibst Du dir in C oder Delphi deinen
eigenen Parser.

nEox
19-04-2006, 19:16
Hi Philipp,

ich denke mit dem PEAR Paket XML_Unserializer ist dir geholfen:
http://pear.php.net/package/XML_Serializer/

Einfach mal das Paket laden, da sind einige Beispiele dabei. Wenn noch irgendwas Probleme machen sollte hilft ein Blick in die Doku:
http://pear.php.net/manual/en/package.xml.xml-serializer.xml-unserializer.options.php

Grüße,
nEox