Ralf: XML Daten verarbeiten

Hallo!

Ich befasse mich erst seit einigen Tagen mit PHP und suche nach ein paar guten Quellen, die sich mit der Verarbeitung von XML-Daten in PHP befassen.
Bisher verwende ich für die ersten Schritte das PHP-Handbuch von php.net und habe dort auch was zu XML gefunden. Ich suche aber eher nach einer Art Einführung für die Verarbeitung von XML-Daten.

Damit die Kundigen besser einschätzen können, wonach ich suche, hier ein kurzer Überblick, wie die Daten in mein Script kommen:

Die Daten liegen ursprünglich in einer HTML-Seite vor, die extern generiert wird und auf die ich teilweise Einfluss nehmen kann. Das sieht dann so aus:

  
<pre>  
<Vorgang>  
  <Name>Hans Meier</Name>  
  ...  
  <Anzahl>1</Anzahl>  
  <Artikel>  
    <Anr>1234567</anr>  
    ...  
  </Artikel>  
</Vorgang>  
</pre>  
<script type=text/javascript src=></script>  

Da ich diesen gesamten Teil beeinflussen kann, habe ich die Möglichkeit, die betreffenden Teile mit Javascript zu extrahieren und per HTTP POST an ein PHP Script zu senden. Es können tausende dieser Teile in einer HTML-Seite vorhanden sein (werden dann als Array eingelesen).

Ich habe im PHP-Handbuch den Eindruck gewonnen, dass es verschiedene Verarbeitungmöglichkeiten für XML-Daten gibt. Zum einen kann man sie als Arrays verarbeiten, zum anderen auch per DOM.
Eine Änderung der Daten ist nicht erforderlich - sie müssen nur ausgewertet werden.

Vielleicht gibt es auch noch eine andere Möglichkeit, die Daten an das PHP-Script zu senden?

Ach ja, die mir aktuell zur Verfügung stehende PHP-Version ist 4.1.0

Ich wünsche allen einen guten Rutsch!

Ralf

  1. echo $begrüßung;

    Die Daten liegen ursprünglich in einer HTML-Seite vor, die extern generiert wird und auf die ich teilweise Einfluss nehmen kann. Das sieht dann so aus:

    <pre>

    <Vorgang>
      <Name>Hans Meier</Name>
      ...
      <Anzahl>1</Anzahl>
      <Artikel>
        <Anr>1234567</anr>
        ...
      </Artikel>
    </Vorgang>
    </pre>
    <script type=text/javascript src=></script>

      
    pre und script mögen HTML-Elemente sein, der Rest ist es nicht. Deine Daten liegen also vermutlich eher in XML vor.  
      
    
    > Ich habe im PHP-Handbuch den Eindruck gewonnen, dass es verschiedene Verarbeitungmöglichkeiten für XML-Daten gibt. Zum einen kann man sie als Arrays verarbeiten, zum anderen auch per DOM.  
    > Eine Änderung der Daten ist nicht erforderlich - sie müssen nur ausgewertet werden.  
      
    Worin siehst du den Unterschied zwischen verarbeiten und auswerten? Wenn es dir nur um die Erzeugung einer HTML-Darstellung aus den XML-Daten geht, fände ich eine XSL-Transformation angebrachter.  
      
      
    echo "$verabschiedung $name";
    
    1. pre und script mögen HTML-Elemente sein, der Rest ist es nicht. Deine Daten liegen also vermutlich eher in XML vor.

      Nein - wie ich bereits geschrieben habe, liegen die Daten in einer HTML-Seite vor und ich habe Einfluss auf Teile des Inhalts. Mein Gedanke war nun, die zu verarbeitenden Daten im XML-Format innerhalb der HTML-Seite darzustellen.

      Worin siehst du den Unterschied zwischen verarbeiten und auswerten? Wenn es dir nur um die Erzeugung einer HTML-Darstellung aus den XML-Daten geht, fände ich eine XSL-Transformation angebrachter.

      Nenn es, wie du willst. Es geht nicht um die Erzeugung einer HTML-Darstellung. Geh einfach davon aus, dass im $_POST Array Daten im XML-Format zur Verfügung stehen (wobei mich schon interessieren würde, ob ich per Javascript die Daten auch auf andere Art und Weise an mein PHP-Script übergeben kann).
      Und diese möchte ich verarbeiten, auswerten - was auch immer ...

      Und nochmals - ich bin absoluter PHP-Anfänger und suche nach einer Einführung für die Verarbeitung von XML-Daten in PHP.

      Vielleicht ist ja meine Frage falsch gestellt oder ich bin hier im falschen Forum.

      Ralf

      1. echo $begrüßung;

        pre und script mögen HTML-Elemente sein, der Rest ist es nicht. Deine Daten liegen also vermutlich eher in XML vor.

        Nein - wie ich bereits geschrieben habe, liegen die Daten in einer HTML-Seite vor

        Das macht man aber nicht. Das ist dann kein richtiges HTML, und wenn sich das restliche HTML nicht an die XML-Regeln hält, lässt sich solch ein Mischdokument auch schwerlich bis gar nicht mit XML-Parsern lesen. Die sind in Syntax-Fragen pingeliger.

        und ich habe Einfluss auf Teile des Inhalts. Mein Gedanke war nun, die zu verarbeitenden Daten im XML-Format innerhalb der HTML-Seite darzustellen.

        Es gibt nicht nur eine Möglichkeit, Daten in HTML einzubetten. XML und damit auch XHTML kennt beispielsweise Namensräume. Damit lassen sich Elemente aus unterschiedlichen Bereichen in einem Dokument notieren, z.B. deine Daten innerhalb des restlichen HTMLs, ohne dass dadurch XML-Regeln oder die HTML-Regeln verletzt werden oder es zu Konflikten bei der Gleich-Benennung der Elemente kommt.

        Worin siehst du den Unterschied zwischen verarbeiten und auswerten? Wenn es dir nur um die Erzeugung einer HTML-Darstellung aus den XML-Daten geht, fände ich eine XSL-Transformation angebrachter.

        Nenn es, wie du willst. Es geht nicht um die Erzeugung einer HTML-Darstellung.

        Es geht ja nicht darum, wie ich etwas nenne, sondern dass wir beide wissen, was gemeint ist. Deine Aussage war, fand ich, nicht eindeutig, weswegen ich da nachhakte. "XSL-Transformation" war ein Lösungsvorschlag, wenn es nur um Darstellung ginge.

        Geh einfach davon aus, dass im $_POST Array Daten im XML-Format zur Verfügung stehen (wobei mich schon interessieren würde, ob ich per Javascript die Daten auch auf andere Art und Weise an mein PHP-Script übergeben kann).

        Mit Javascript kannst du natürlich (fast) alle möglichen Daten verändern, die du an den Server sendest.

        Und diese möchte ich verarbeiten, auswerten - was auch immer ...

        Und da wäre es nun interessant zu wissen, was genau du vorhast, denn hier bist du an eine Gabelung auf dem Lösungsweg angelangt.

        Und nochmals - ich bin absoluter PHP-Anfänger und suche nach einer Einführung für die Verarbeitung von XML-Daten in PHP.
        Vielleicht ist ja meine Frage falsch gestellt oder ich bin hier im falschen Forum.

        Du bist hier schon nicht verkehrt, nur ist das Thema XML umfangreicher als dass es mit einer Forumsantwort auf eine noch nicht sehr spezifizierte Frage anzuhandeln geht. :-)

        Mit XSLT kann man ein XML-Dokument (oder Teile davon) in ein anderes umformen. Man kann auch das XML parsen lassen und auf die Elemente direkt zugreifen oder die Verschachtlungsstruktur des XMLs mit PHP-Strukturen nachbilden, oder oder oder.

        echo "$verabschiedung $name";

        1. Wir kommen der Sache näher ...

          Nein - wie ich bereits geschrieben habe, liegen die Daten in einer HTML-Seite vor

          Das macht man aber nicht. Das ist dann kein richtiges HTML, und wenn sich das restliche HTML nicht an die XML-Regeln hält, lässt sich solch ein Mischdokument auch schwerlich bis gar nicht mit XML-Parsern lesen. Die sind in Syntax-Fragen pingeliger.

          Es geht auch nicht darum, die HTML-Seite zu verarbeiten. Das ist nur der Ausgangspunkt und es besteht auch kein Zugriff per PHP auf die Seite. Ich habe aber vollständigen Einfluss auf den Ausschnitt, denn ich im Eingangsposting dargestellt habe. Somit kann ich per Javascript auf das innerHTML des <pre> Tags zugreifen, dies in ein <input> Tag schreiben und per HTTP POST an mein PHP Script senden. Vielleicht gäbe es auch andere Wege, spielt aber keine große Rolle.

          Es gibt nicht nur eine Möglichkeit, Daten in HTML einzubetten. XML und damit auch XHTML kennt beispielsweise Namensräume. Damit lassen sich Elemente aus unterschiedlichen Bereichen in einem Dokument notieren, z.B. deine Daten innerhalb des restlichen HTMLs, ohne dass dadurch XML-Regeln oder die HTML-Regeln verletzt werden oder es zu Konflikten bei der Gleich-Benennung der Elemente kommt.

          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.

          Es geht ja nicht darum, wie ich etwas nenne, sondern dass wir beide wissen, was gemeint ist. Deine Aussage war, fand ich, nicht eindeutig, weswegen ich da nachhakte. "XSL-Transformation" war ein Lösungsvorschlag, wenn es nur um Darstellung ginge.

          Vielleicht habe ich nicht deutlich genug gemacht, dass es mir NUR um die Verarbeitung/Auswertung der Daten mit PHP geht. Mein Beispiel sollte nur dazu dienen, den Weg der Daten nach PHP zu erläutern.

          Mit Javascript kannst du natürlich (fast) alle möglichen Daten verändern, die du an den Server sendest.

          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.

          Und da wäre es nun interessant zu wissen, was genau du vorhast, denn hier bist du an eine Gabelung auf dem Lösungsweg angelangt.

          Ok - mir war nicht klar, dass das für die Betrachtung wesentlich ist. 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.

          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.

          Sorry für die vielleicht etwas unglückliche Ausdrucksweise, aber ich habe mich auch mit XML vorher noch nicht befasst.

          Du bist hier schon nicht verkehrt, nur ist das Thema XML umfangreicher als dass es mit einer Forumsantwort auf eine noch nicht sehr spezifizierte Frage anzuhandeln geht. :-)

          Daher habe ich ja nach einer Einführung in das Thema gefragt. Bisher hat meine Suche jedoch nichts für mich brauchbares ergeben.

          Mit XSLT kann man ein XML-Dokument (oder Teile davon) in ein anderes umformen. Man kann auch das XML parsen lassen und auf die Elemente direkt zugreifen oder die Verschachtlungsstruktur des XMLs mit PHP-Strukturen nachbilden, oder oder oder.

          XSLT sagt mir schon mal gar nichts. Auf die Elemente direkt zugreifen möchte ich schon, eine direkte Nachbildung der Struktur in PHP erscheint mir dagegen nicht so wichtig zu sein.

          Ich stelle mir das eigentlich eher so vor, dass ich nach der Transformation einen Array mit Vorgängen habe. Jeder Vorgang ist auch wieder ein Array, wobei die einzelnen Artikel ebenfalls wieder Arrays sind.
          Vielleicht ist aber auch eine Baumstruktur (DOM) sinnvoller? Ich habe damit so meine Probleme, weil ich programmieren gelernt habe, als die Leute, die heute mit objektorientierten Sprachen aufwachsen, noch nicht einmal geplant waren ...

          Ralf

          1. Vielleicht ist aber auch eine Baumstruktur (DOM) sinnvoller? Ich habe damit so meine Probleme, weil ich programmieren gelernt habe, als die Leute, die heute mit objektorientierten Sprachen aufwachsen, noch nicht einmal geplant waren ...

            Du findest doch ueberall zu XML und PHP Material, auch hier bei SELFHTML (zumindest bzgl. XML).

            Uebrigens ist XML eigentlich nichts Neues, wenn Du mit relationalen Datenbasen gearbeitet hast. Gemeint sind Tabellen, die verzeigert sind und Entitaeten nachbilden, bspw. ISAM-Tabellen unter COBOL oder BASIC.

            Ein XML-Dokument kann man sich bspw. vorstellen wie eine serialisierte relationale Datenbasis.

            Ich hoffe mal, dass Du mit Deinem STRUCT gluecklich geworden bist, ansonsten sind gut spezifizierte Fragen natuerlich hier weiterhin sehr willkommen.

            1. Du findest doch ueberall zu XML und PHP Material, auch hier bei SELFHTML (zumindest bzgl. XML).

              Vielleicht habe ich zuviel erwartet. Ich hatte gehofft, eine relativ knappe Beschreibung zu finden, wie ich die Daten in eine mir genehme Form bringen kann (wobei ich zugeben muss, dass ich noch nicht einmal weiss, wie diese aussieht).

              Ein XML-Dokument kann man sich bspw. vorstellen wie eine serialisierte relationale Datenbasis.

              Ich hatte zwar bisher recht wenig mit Datenbanken zu tun, habe aber mit der grundsätzlichen Vorstellung kein Problem, seit ich recht erfolgreich mit Javascript durch's DOM reise ;)

              Ich hoffe mal, dass Du mit Deinem STRUCT gluecklich geworden bist, ansonsten sind gut spezifizierte Fragen natuerlich hier weiterhin sehr willkommen.

              Ich habe es noch nicht versucht, weil ich keine Zeit in der falschen Richtung verschwenden wollte. Etwas Zeit werde ich noch in die Suche stecken und dann werde ich wohl mal xml_parse_into_struct() ausprobieren.

              Ralf

              1. Vielleicht habe ich zuviel erwartet.

                Lass mal solche Anmerkungen weg. Sonst koennte das wirklich das falsche Forum fuer Dich werden.   :)

                Ich glaube, dass Du erst einmal ein wenig experimentieren solltest. Also die Planungsphase mal ein wenig abkuerzen und einfach mit XML-Daten herumexperimentieren, ein paar Tipps:

                • XMLSpy in der Evalu installieren
                • XMLParser auf Deine Beduerfnisse hin abklopfen (da gibts frappierende Leistungsunterschiede)
                • eventuell den MS XML Parser in PHP an den Start bringen
                • XPath ein wenig lernen
                • XSLTransformationen (ggf. mit "Onkel" XMLSpy) antesten
                • Dir bekannte Daternstrukturen spasseshalber in XML umwandeln

                (Alles unter der Annahme, dass Du bis zum 02.01.2007 etwas Zeit hast.   :)

                1. Vielleicht habe ich zuviel erwartet.

                  Lass mal solche Anmerkungen weg. Sonst koennte das wirklich das falsche Forum fuer Dich werden.   :)

                  Sorry - das kam wohl falsch rüber. Ich meinte das weniger auf die Antworten bezogen als vielmehr auf den Umstand, dass es das nicht gibt (oder geben kann), was ich suche. Das Thema ist halt zu vielschichtig.

                  Ich glaube, dass Du erst einmal ein wenig experimentieren solltest.

                  Damit hast du sicherlich Recht, aber ...

                  Also die Planungsphase mal ein wenig abkuerzen und einfach mit XML-Daten herumexperimentieren, ein paar Tipps:

                  • XMLSpy in der Evalu installieren
                  • XMLParser auf Deine Beduerfnisse hin abklopfen (da gibts frappierende Leistungsunterschiede)
                  • eventuell den MS XML Parser in PHP an den Start bringen
                  • XPath ein wenig lernen
                  • XSLTransformationen (ggf. mit "Onkel" XMLSpy) antesten
                  • Dir bekannte Daternstrukturen spasseshalber in XML umwandeln

                  (Alles unter der Annahme, dass Du bis zum 02.01.2007 etwas Zeit hast.   :)

                  Deine Vorschläge setzen voraus, dass ich kurzfristig etwas an der mir zur Verfügung stehenden PHP-Implementation ändern könnte. Das ist nicht der Fall - ich muss mich auf das beschränken, was aktuell vorhanden ist.

                  Vielleicht reicht ja für den ersten Anfang schon xml_parse_into_struct() aus. Und Zeit habe ich schon wenig genug, als dass ich viel experimentieren könnte.

                  Ralf

          2. 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";

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

              Die Daten können aber nun einmal nur innerhalb einer HTML-Seite erzeugt werden. Durch das Erzeugen eines <script> Tags steht mir zur Verarbeitung dann Javascript zur Verfügung. Dieses ist dann sozusagen das Medium, die Daten an PHP zu übergeben.
              AJAX kommt dafür übrigens nicht in Frage, da es keine Übergabe an eine andere Domain zulässt (jedenfalls ist der XMLHttpRequest in dieser Hinsicht beschränkt). Die HTML-Seite liegt in einer Domain, auf die ich normal keinen Zugriff 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.

              Nein - mein Beispiel ist schon so real zu verstehen, als dass es den Ausgangspunkt der Daten beschreibt. Mit dem <script> bemühe ich externes Javascript, um die innerhalb des <pre> Tags liegenden XML-Daten als "value" eines <input> Tags zu setzen und dies dann per HTTP-POST zu versenden.

              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.

              Ich habe aus dem PHP-Handbuch folgendes Beispiel entnommen:

                
              <?php  
              $simple = "<para><note>simple note</note></para>";  
              $p = xml_parser_create();  
              xml_parse_into_struct($p, $simple, $vals, $index);  
              xml_parser_free($p);  
              echo "Index array\n";  
              print_r($index);  
              echo "\nVals array\n";  
              print_r($vals);  
              ?>  
              
              

              Ich habe das wie schon erwähnt noch nicht ausprobiert, vermute aber mal, dass es mit der vorhandenen Version 4.1.0 ohne weitere Voraussetzungen funktioniert.

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

              Mein Webspace wird bei keinem großen Provider gehostet. Ich habe aber zu sehr geringen Kosten eine Leistung, für die ich woanders einen eigenen Server laufen lassen müsste. Dafür bin ich etwas von den sonstigen Gegebenheiten abhängig. Vielleicht kann ich auch PHP5 bekommen, aber es würde dauern (simpleXML sieht mir recht interessant aus).

              Hier mal ein paar Details aus phpinfo():
              with-xml=/usr' '--with-expat-dir=/usr' '
              XML Support active
              XML Namespace Support active
              EXPAT Version expat_1.95.8

              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.

              Wen ich das richtig verstanden habe, macht xml_parse_into_struct()doch genau das, was ich brauche? Also die Umsetzung in Arrays?

              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.

              Mir geht es nicht um die Darstellung der Ausgangsdaten (trotzdem hat mich dein Hinweis auf eine interessante Idee gebracht!). Ich will aus den Daten Listen und Grafiken erstellen. Dazu müssen sie extrahiert, verdichtet, sortiert und formatiert werden.

              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.

              Auf JSON bin ich schon einmal gestoßen, als ich festgestellt habe, dass ich mit AJAX (bzw. XMLHttpRequest) nicht weiter komme. Aber wie schon mal geschrieben, geht es primär nicht um den Transport der Daten.

              Auf jeden Fall schon mal vielen Dank, denn ich habe einige Anregungen bekommen.

              Ralf

              1. echo $begrüßung;

                Wen ich das richtig verstanden habe, macht xml_parse_into_struct()doch genau das, was ich brauche? Also die Umsetzung in Arrays?

                Achja, xml_parse_into_struct() gibt es auch noch, aber hast du dir mal angeschaut, wie das Ergebnis aussieht? Nicht grad berauschend, wie ich finde. Ein möglicherweise tief verschachteltes XML-Dokument wird in zwei relativ flache Arrays zerlegt. Das entspricht in der Form gar nicht mehr der ursprünglichen Struktur. Wenn man die haben möchte braucht es eine weitere Umformung.

                echo "$verabschiedung $name";

                1. Achja, xml_parse_into_struct() gibt es auch noch, aber hast du dir mal angeschaut, wie das Ergebnis aussieht? Nicht grad berauschend, wie ich finde. Ein möglicherweise tief verschachteltes XML-Dokument wird in zwei relativ flache Arrays zerlegt. Das entspricht in der Form gar nicht mehr der ursprünglichen Struktur. Wenn man die haben möchte braucht es eine weitere Umformung.

                  Stimmt - ist ziemlich flach. Aber ad hoc steht mir wohl nichts anderes zur Verfügung und meine Struktur hat auch nur 2 Ebenen.

                  Vielleicht verschiebe ich das auch erst mal und versuche meinen Admin zu bewegen, PHP5 zu installieren. Hab schließlich noch eine Menge anderes Zeugs an der Backe, was auch erledigt werden muss.

                  Vielen Dank für die Hilfe!

                  Ralf

  2. Vielleicht gibt es auch noch eine andere Möglichkeit, die Daten an das PHP-Script zu senden?

    Unverarbeitet z.B.. Das scheint mir aus bestimmten Gruenden (richtig verteilte Logik, "eine Schnittstelle weniger") korrekt.

    Ich wünsche allen einen guten Rutsch!

    Ebenfalls!

    BTW - Du kommst einfach mit einem geeigneten XML-Parser und machst was das Herz begehrt:

    • Werte einzelner Attribute und Elemente auslesen
    • XSLTransformationen, bspw. fuer Ausgabezwecke
    • Validieren gegen ein Schema

    Die Primaerfrage ist vielleicht: "Velchen Parser nehme ich?".

    1. Vielleicht gibt es auch noch eine andere Möglichkeit, die Daten an das PHP-Script zu senden?

      Unverarbeitet z.B.. Das scheint mir aus bestimmten Gruenden (richtig verteilte Logik, "eine Schnittstelle weniger") korrekt.

      Das Ausgangsproblem ist, dass ich Daten aus einer HTML-Seite extrahieren muss. Denn dort sind sie vorhanden. Auf die Form habe ich durchaus Einfluss und ich habe mir überlegt, dass das XML-Format geeignet wäre, weil sich das mit PHP gut verarbeiten lässt. Jedenfalls entnehme ich das dem PHP-Handbuch von php.net.

      BTW - Du kommst einfach mit einem geeigneten XML-Parser und machst was das Herz begehrt:

      • Werte einzelner Attribute und Elemente auslesen
      • XSLTransformationen, bspw. fuer Ausgabezwecke
      • Validieren gegen ein Schema

      Die Primaerfrage ist vielleicht: "Velchen Parser nehme ich?".

      Nein - die Primärfrage war: Wo finde ich eine Einführung, wie mit PHP die Verarbeitung von XML-Daten erfolgt?

      Ich habe im PHP-Handbuch die Funktion xml_parse_into_struct() gefunden. Wenn ich das richtig verstehe, würde diese einen vorhandenen String von Daten im XML-Format in Arrays aufteilen.

      Vielleicht gibt es aber noch andere/bessere Möglichkeiten. Wie schon erwähnt, befasse ich mich erst seit wenigen Tagen überhaupt mit PHP und suche eine Einführung zum Thema XML in PHP.

      Ralf