Immer mehr Inhalte liegen im XML-Format vor und XML-Dateien werden zunehmend komplexer. Daher muss man diese Dateien mitunter analysieren und statistische Angaben über sie ermitteln. Dies ist zwar keine alltägliche Aufgabe, aber sollte man doch einmal in die Verlegenheit kommen, wird man eine Lösung zu schätzen wissen, die ohne komplizierte Routinen zum Parsen mit SAX nebst Berechnungen oder ausgefeilte Algorithmen zum Durchforsten von DOM-Bäumen auskommt. Alles was man braucht, ist die Klasse XML_Statistics aus dem PHP-Fundus PEAR.
Was ist XML_Statistics?
Stephan Schmidt, Entwickler des Template-Systems patTemplate und Betreiber der Website phptools.de, ist auch für die Entwicklung und Pflege von XML_Statistics verantwortlich. Der Zweck dieser Klasse ist einfach: statistische Informationen über die Elemente, Attribute und sonstigen Bestandteile einer XML-Datei zu sammeln. Diese Klasse bietet eine sauber definierte API, die Entwicklern unter anderem die folgenden Zahlen liefert:
- die Gesamtzahl der Elemente in einer XML-Datei oder einem String
- die Gesamtzahl der Attribute
- die Gesamtzahl von PIs (Process Instructions), Entities und CDATA-Blöcken
- die Gesamtzahl der Elemente oder Attribute, auf die ein bestimmtes Muster zutrifft
- die maximale Tiefe der XML-Hierarchie
Elemente zählen
Vorausgesetzt wird, dass eine funktionierende PHP/Apache-Installation vorhanden ist, mit den standardmäßigen PEAR-Dateien und allen korrekten Pfadangaben. Zunächst lädt man die Klasse herunter und installiert sie in das PEAR-Verzeichnis. Als nächstes erstellt man ein PHP-Script mit dem Code aus Listing A.
Wenn man bereits mit Objekten und Klassen in PHP vertraut ist, dürfte der Code im Wesentlichen selbsterklärend sein. Der erste Schritt besteht darin, die Klassen-Datei einzubinden und ein Objekt dieser Klasse zu instanziieren. Danach kann man mit der Methode analyzeString() den XML-Inhalt analysieren. Diese Analyse ist notwendig, ehe man irgendwelche Berechnungen anstellen kann. Und schließlich kann man mit der Methode countTag() alle Elemente des Dokuments zählen und die Summe ausgeben.
Hier die Ausgabe von Listing A:
String contains 7 elements
Man kann auch die Elemente zählen, auf die ein bestimmtes Muster zutrifft, indem man den Namen des Elements als Eingabeargument an die Methode countTag() übergibt. Listing B ist eine Variante des Codes aus Listing A um dies zu illustrieren. Hier die Ausgabe, die man erhalten müsste:
String contains 5 fields
Wie man sieht, ist dies eine äußerst nützliche Funktion, wenn man zum Beispiel herausfinden will, wie viele <Elemente> in einer XML-Datei benannt sind. Dies ist zudem wesentlich bequemer als den Namen eines Elements abzufragen und eine Zählvariable hoch zu zählen (wie man es bei der manuellen Programmierung mit SAX oder DOM machen müsste).
Neueste Kommentare
Noch keine Kommentare zu Statistische Angaben über XML-Dokumente mit PHP
Kommentar hinzufügenVielen Dank für Ihren Kommentar.
Ihr Kommentar wurde gespeichert und wartet auf Moderation.