dedlfix: XML Daten verarbeiten

Beitrag lesen

echo $begrüßung;

Wir kommen der Sache näher ...

Ja, finde ich auch.

Ich kann gern die Form der Daten anpassen, wenn sie falsch oder unpassend ist. Den Ort der Daten innerhalb einer HTML-Seite kann ich jedoch nicht ändern.

Der Ort und die Ablage im HTML-Code ist, so wie ich dein Vorhaben nun verstanden habe, nicht weiter von Belang, also Schwamm drüber.

Das ist auch nicht mein Problem - mit Javascript kenne ich mich aus. Mir stellte sich nur die nebensächliche Frage, ob es noch einen anderen Weg als per HTML-Formular gibt. Für kleine Datenmengen habe ich bisher in Javascript ein SCRIPT Element erzeugt und die Daten als Parameter angehängt. Hier jedoch handelt es sich u.U. um tausende der Fragmente, wie ich sie dargestellt habe.

Das HTML-Formular ist nur zur Darstellung im Browser gedacht und für dein Vorhaben insofern nützlich, als man mit Javascript auf die Elemente eines Formulars recht einfach zugreifen kann, und es die einzige Möglichkeit ist, einen HTTP-POST-Request an den Server abzusetzen, wenn man mal von den Möglichkeiten von AJAX absieht.

Die Daten sollen sortiert, summiert, als Tabelle oder Grafik ausgegeben werden. Zunächst wollte ich sie zeilenweise übergeben, mir erschien aber das XML-Format dafür geeignet, als ich gelesen habe, dass es dafür in PHP schon Verarbeitungsroutinen gibt.

Du benötigst also, so wie es sich darstellt einen XML-Parser, der aus dem XML die Nutzdaten vom Overhead trennt, oder auch einen Zugriff via DOM oder ähnlich.

Du erwähntest Version 4.1 von PHP. Diese ist schon recht betagt und bietet noch nicht allzu viele Möglichkeiten. Außerdem kann es sein, dass die XML- oder/und die DOM-Extension gar nicht eingebunden wurde. Das bekommst du aber mit phpinfo() raus. (Von der DOM-Implementierung gibt es übrigens zwei Versionen. Soweit ich mich erinnere, war die mittlerweile veraltete Version lange Zeit als experimentall gekennzeichnet, weswegen sie kaum Einzug bei Providern gehalten haben dürfte.)

Die Daten liegen also bereits in der XML-Form vor. Mit PHP lässt sich einfacher auf dessen eigene Datenstrukturen, wie beispielsweise Arrays, oder auch zu Bäumen verschachtelte Arrays, zugreifen.

Der XML-Parser ist recht rudimentär. Der liest stur vor sich hin und ruft gelegentlich von dir definierte Funktionen auf, wenn er ein Start-Tag, ein End-Tag oder Daten gefunden hat. Es obliegt dann dir, was du damit anstellst, z.B. ein verschachteltes Array draus bauen. Die DOM-Erweiterung bietet dir schon ein paar mehr Möglichkeiten, auf die Elemente zuzugreifen, ist aber möglicherweise schon überdimensioniert. Im Grunde brauchst du nur SimpleXML, das aber zu PHP 5 gehört. Es gibt jedoch Implementationen für PHP 4, die diese Erweiterung nachbilden. Außerdem gibt es z.B. in PEAR noch einige Pakete, die sich mit XML beschäftigen und unter PHP 4 laufen. XML_Tree und der XML_Unserializer (im XML_Serializer-Paket enthalten) dürften für dich interessant sein. Und in der restlichen freien Wildbahn gibt es noch genügend anderer Scripte, die vorgeben, XML parsen zu können und in irgendeiner sinnvollen Art Zugriff auf die Daten zu gewähren. Doch mit denen hab ich mich mangels Interesse nicht weiter befasst.

Mich interessiert also im Wesentlichen der Inhalt von benannten Elementen. Etwa in der Art: "Die Menge aller Artikel mit der Bezeichnung xyz". Wobei Artikel ein Element von Vorgang ist und Bezeichnung ein Element von Artikel.

Für solcher Art Abfragen hat man XPath erfunden. Siehe: Darstellung von XML-Daten. Hauptsächlich wird sie wohl bei XSL-Transformationen verwendet, kann aber auch in der DOM-Extension genutzt werden.

Es gibt auch noch weitere Möglichkeiten, Daten zum Transport zu verpacken. XMLRPC ist eine davon. Die XMLRPC-Extension gibt es schon recht lange. Da das Format recht overheadreich ist, würde ich damit nicht anfangen, wenn es nicht bereits beim Sender eine Bibliothek gibt, die Daten XMLRPC-gerecht verpacken kann. Der Versand aus Javascript raus dürfte auch nicht grade einfach sein. Der Vorteil auf PHP-Seite wäre, dass du eine PHP-gemäße Struktur von der XMLRPC-Extension erhältst, mit der du weiterarbeiten kannst.

Wenn die Daten noch nicht verpackt sind, lohnt sich sicher ein Blick auf JSON, ein Format, das Daten so verpacken kann, dass diese für Javascript sehr leicht zu lesen sind, und sich auch sonst leicht parsen lassen. JSON-Implentierungen gibt es auch für PHP.

echo "$verabschiedung $name";