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

KI-gestütztes Programmieren bringt IT-Herausforderungen mit sich

OutSystems-Studie: 62 Prozent der Befragten haben Sicherheits- und Governance-Bedenken bei Softwareentwicklung mit KI-Unterstützung.

1 Stunde ago

Studie: Ein Drittel aller E-Mails an Unternehmen sind unerwünscht

Der Cybersecurity Report von Hornetsecurity stuft 2,3 Prozent der Inhalte gar als bösartig ein. Die…

3 Tagen ago

HubPhish: Phishing-Kampagne zielt auf europäische Unternehmen

Die Hintermänner haben es auf Zugangsdaten zu Microsoft Azure abgesehen. Die Kampagne ist bis mindestens…

4 Tagen ago

1. Januar 2025: Umstieg auf E-Rechnung im B2B-Geschäftsverkehr

Cloud-Plattform für elektronische Beschaffungsprozesse mit automatisierter Abwicklung elektronischer Rechnungen.

4 Tagen ago

Google schließt schwerwiegende Sicherheitslücken in Chrome 131

Mindestens eine Schwachstelle erlaubt eine Remotecodeausführung. Dem Entdecker zahlt Google eine besonders hohe Belohnung von…

4 Tagen ago

Erreichbarkeit im Weihnachtsurlaub weiterhin hoch

Nur rund die Hälfte schaltet während der Feiertage komplett vom Job ab. Die anderen sind…

5 Tagen ago