Ergebnis 1 bis 4 von 4

Thema: Probleme mit den xml-Funktionen von Php

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1

    Probleme mit den xml-Funktionen von Php

    Moin,

    folgendes Problem: ich habe mir mal ein Tutorial zu den xml-Funktionen von Php durchgelesen. Jetzt habe ich versucht, mir selbst einen Parser zu basteln.
    PHP-Code:
    <?php

    function auf($parser$name$attr){
        switch(
    $name){
            case 
    'ABC':
                echo 
    '<tr><td valign="top"><strong>' $attr['NAME'] . '</strong></td><td>';
                break;
            
            case 
    'XYZ':
                echo 
    '<tr><td colspan="2">[';
                break;
            
            default:
                die(
    'Unbekanntes Element: ' $name);
                break;
        }
    }

    function 
    zu($parser$name){
        switch(
    $name){
            case 
    'ABC':
                echo 
    "</td></tr>\n";
                break;
            
            case 
    'XYZ':
                echo 
    "]</td></tr>\n";
                break;
            
            default:
                die(
    'Unbekanntes Element: ' $name);
                break;
        }
    }

    function 
    text($parser$text){
        echo 
    $text;
    }


    echo 
    "<html><body>\n<table border=\"1\">\n";

    $data file('test.xml');

    $parser xml_parser_create();
    xml_set_element_handler($parser'auf''zu');
    xml_set_character_data_handler($parser'text');


    foreach(
    $data as $i){
        if(!
    xml_parse($parser$i))
            die(
    sprintf("XML error: %s at line %d\n",
                       
    xml_error_string(xml_get_error_code($parser)),
                       
    xml_get_current_line_number($parser)));
    }


    xml_parser_free($parser);

    echo 
    "</table>\n</body></html>"

    ?>
    Damit will ich folgende xml-Datei parsen:
    Code:
    <?xml version="1.0"?>
    <xyz>bla</xyz>
    <abc ttt="test">So, wenn man jetzt keine Fehlermeldungen sieht, müsste es gehen.</abc>
    Der Parser gibt aber nur den Teil innerhalb von <xyz> aus. Danach bricht er mit folgender Meldung ab:
    XML error: junk after document element at line 3
    (die Fehlermeldung wird von dem die()-Befehl ausgegeben).
    Leider konnte ich im Netz nichts darüber rausfinden, was genau "junk" in diesem Fall bedeutet und wie sich das beheben lässt.
    Hat jemand eine Ahnung?

  2. #2
    AFAIK muss eine XML-Datei von einem Tag komplett umgeben sein. Versuchs mal mit dieser Datei:
    Code:
    <?xml version="1.0"?>
    <xml>
       <xyz>bla</xyz>
       <abc ttt="test">So, wenn man jetzt keine Fehlermeldungen sieht, müsste es gehen.</abc>
    </xml>
    Ich kann mich irren, aber so funktioniert es bei mir.

    [EDIT]
    Glück gehabt. Aber immerhin gibt Jeez mir damit Recht ^^

    Geändert von dead_orc (25.03.2005 um 13:56 Uhr)

  3. #3
    Zitat Zitat von masterquest
    Damit will ich folgende xml-Datei parsen:
    Code:
    <?xml version="1.0"?>
    <xyz>bla</xyz>
    <abc ttt="test">So, wenn man jetzt keine Fehlermeldungen sieht, müsste es gehen.</abc>
    Der Parser gibt aber nur den Teil innerhalb von <xyz> aus. Danach bricht er mit folgender Meldung ab:
    XML error: junk after document element at line 3
    (die Fehlermeldung wird von dem die()-Befehl ausgegeben).
    Leider konnte ich im Netz nichts darüber rausfinden, was genau "junk" in diesem Fall bedeutet und wie sich das beheben lässt.
    Hat jemand eine Ahnung?
    Das ist ganz korrekt. Der XML-Standard schreibt folgenden Aufbau eines XML-Dokuments vor:
    Code:
    <?xml version="x.y"?>
    <basistag>
    <kram dazwischen />
    </basistag>
    ALLES außer der XML-Definition und dem Basistag muß innerhalb des Basistags stehen. Es darf nur einen Basistag geben.

    Du hast nach dem Basistag Text, womit es kein wohlgeformtes XML-Dokument ist.

  4. #4
    Wieso vergesse ich immer das Detail, das gerade wichtig ist? Daran lag's, thx.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •