itst-Elfitst.net — 100 % β

Pro-bono-Beratung - Kostenlos, aber nicht umsonst.

XML-Parsing in PHP

PHP Everywhere: High Speed XML Parsing is Not Intuitive

John benchmarkt RegEx gegen explode(!) DOM, SAX und XPath.

Results

Here are the timings for processing the RSS file 1000 times. Faster is better.

        seconds     Relative to REGEX
REGEX   0.1080      1.00
EXPLODE 0.1696      1.57
DOM     6.3212     58.53
XPATH   8.3417     77.24
SAX     10.0851    93.38 

[PHP Everywhere: High Speed XML Parsing is Not Intuitive]

Wie aus den Kommentaren ersichtlich ist, ist das zwar ein an sich beachtenswertes Resultat, allerdings fehlt der Bezug zur realen Welt. XML mit Regulären Audrücken zu Parsen funktioniert nur dann, wenn über die Form des XML absolute Gewissheit besteht.

Auf meinen akuten Fall, nämlich eRONA, bezogen: da es fast 10 Versionen von RSS gibt (inkl. Atom 0.3 sind es 10) kann ich hier nicht mit RegEx arbeiten, da ich garnicht weiß, wie die Daten aussehen, die ich bekomme. Also bleibt nur der Weg über einen Parser wie SAX oder expat, der aus dem XML einen Baum zaubert, in dem man sich bewegen kann und auf gut Glück versucht, Daten zu extrahieren.

Der Feed Parser [dive into mark] aka Ultra Liberal RSS Parser (basierend auf SAX) geht einen Schritt weiter und ‘normalisiert’ eingegebene Daten in dem Versuch, ein möglichst sinnvolles Resultat sogar für eigentlich unbrauchbare Feeds zu liefern.

Note to self: Wie kann ich den ULFP (sind Abk. nicht was dolles ;)) in eRONA (noch eine! Juhu!) einbauen?

Update: John’s PHP Benchmarking Suite (ZIP)

Deine Meinung?