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

Microsoft nennt weitere Details zu kostenpflichtigen Patches für Windows 10

Erstmals liegen Preise für Verbraucher vor. Sie zahlen weniger als Geschäftskunden. Dafür beschränkt Microsoft den…

4 Stunden ago

Microsoft verschiebt erneut Copilot Recall

Die Entwickler arbeiten noch an weiteren „Verfeinerungen“. Windows Insider erhalten nun wohl eine erste Vorschau…

22 Stunden ago

GenKI im Job: Mitarbeitende schaffen Tatsachen

Laut Bitkom-Umfrage werden in jedem dritten Unternehmen in Deutschland private KI-Zugänge genutzt. Tendenz steigend.

1 Tag ago

97 Prozent der Großunternehmen melden Cyber-Vorfälle

2023 erlitten neun von zehn Unternehmen in der DACH-Region Umsatzverluste und Kurseinbrüche in Folge von…

1 Tag ago

„Pacific Rim“-Report: riesiges, gegnerisches Angriffs-Ökosystem

Der Report „Pacific Rim“ von Sophos beschreibt Katz-und-Maus-Spiel aus Angriffs- und Verteidigungsoperationen mit staatlich unterstützten…

1 Tag ago

DeepL setzt erstmals auf NVIDIA DGX SuperPOD mit DGX GB200-Systemen

NVIDIA DGX SuperPOD soll voraussichtlich Mitte 2025 in Betrieb genommen und für Forschungsberechnungen genutzt werden.

1 Tag ago