XML-Datei parsen mit Expat

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • XML-Datei parsen mit Expat

    Hallo,

    Ich habe eine XML-datei die etwa folgendem Aufbau entspricht:

    <?xml version="1.0" encoding="ISO-8859-1"?>
    <Katalog>
    <Buch Bestellnr="111-222-333" Kategorie="Computer">
    <Titel>Buchtitel</Titel>
    <Autor>Name des Autors</Autor>
    </Buch>
    </Katalog>

    Um diese mit Expat zu parsen habe ich nun, etwas vereinfacht, den folgenden Code:

    <?php
    function startElement($parser, $element_name, $element_attribute) {
    }
    function endElement($parser, $element_name) {
    }
    function cdata($parser, $element_inhalt) {
    echo $element_inhalt;
    }
    $xmlFile = file("inhalt.xml");
    $parser = xml_parser_create();
    xml_set_element_handler($parser, "startElement", "endElement");
    xml_set_character_data_handler($parser, "cdata");

    foreach($xmlFile as $elem)
    {
    xml_parse($parser, $elem);
    }
    xml_parser_free($parser);
    ?>

    Soweit so gut. Nur beinhaltet die Ausgabe nur die Zeichendaten in den Tags <TITEL> und <AUTOR> nicht aber die Werte im Tag <BUCH>. Wie kriege ich PHP dazu die Werte in "Kategorie" und "Bestellnr" auszugeben.

    Bin Euch für einen Tipp dankbar.

  • #2
    Hi Roli!

    Willkommen in der Community!

    Also nur Abtippen von Beispielen bringt Dir nichts, wenn Du die Funktionsweise nicht verstehst:
    PHP-Code:
    function startElement($parser$element_name$element_attribute
    {
         foreach (
    $element_attribute as $att => $value){
               echo 
    $value."/n";
               }          

    cu

    Blaster
    Yuppi, endlich Elite ...

    Kommentar


    • #3
      Hi ich stehe vor einem ähnlichem Problem.

      Ich muss mit php4 und expat ein xmlFile parsen und die cdata in eine Variable speichern und diese dann in die DB schreiben.

      In meinem XML File sind keinerlei Attribute. Aber es können zB mehrer Tags Namens "Autor" vorkommen.

      Alles was ich bisher dazu gefunden habe läuft über eine direkte Ausgabe in zB HTML, aber das möchte ich ja nicht.

      Kann mir jemand eine Denkanstoß liefern.

      Danke im Voraus

      Kommentar

      Lädt...
      X