Statistische Angaben über XML-Dokumente mit PHP

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).

Page: 1 2 3

ZDNet.de Redaktion

Recent Posts

Gefahren im Foxit PDF-Reader

Check Point warnt vor offener Schwachstelle, die derzeit von Hackern für Phishing ausgenutzt wird.

1 Tag ago

Bitdefender entdeckt Sicherheitslücken in Überwachungskameras

Video-Babyphones sind ebenfalls betroffen. Cyberkriminelle nehmen vermehrt IoT-Hardware ins Visier.

1 Tag ago

Top-Malware in Deutschland: CloudEye zurück an der Spitze

Der Downloader hat hierzulande im April einen Anteil von 18,58 Prozent. Im Bereich Ransomware ist…

1 Tag ago

Podcast: „Die Zero Trust-Architektur ist gekommen, um zu bleiben“

Unternehmen greifen von überall aus auf die Cloud und Applikationen zu. Dementsprechend reicht das Burg-Prinzip…

2 Tagen ago

Google schließt weitere Zero-Day-Lücke in Chrome

Hacker nutzen eine jetzt gepatchte Schwachstelle im Google-Browser bereits aktiv aus. Die neue Chrome-Version stopft…

2 Tagen ago

Hacker greifen Zero-Day-Lücke in Windows mit Banking-Trojaner QakBot an

Microsoft bietet seit Anfang der Woche einen Patch für die Lücke. Kaspersky-Forscher gehen davon aus,…

2 Tagen ago