Php Xml

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

  • Php Xml

    Hallo, habe folgendes Problem:

    Ich habe eine Variable mit XML-Inhalt. Nun benötige ich aus dem XML-Inhalt die Daten zwischen <Part><content> und </content></Part>. <Part> und </Part> kommen in der Regel 1 bis 3mal vor.

    Ich hoffe Ihr könnt mir helfen, denn ich habe noch nie etwas mit XML programmiert.

    Ich danke euch schon einmal im Vorraus

    So Sieht der XML-Inhalt in etwa aus:

    <message>

    <part>
    <content>
    Hier steht drin, was ich benötige (1)
    </content>
    </part>

    <part>
    <content>
    Hier steht drin, was ich benötige (2)
    </content>
    </part>
    <part>
    <content>
    Hier steht drin, was ich benötige (3)
    </content>
    </part>

    </message>
    Konzeption * Development * Marketing
    http://www.hirschfeld-software.info

  • #2
    -> http://de3.php.net/xml

    Mit folgendem Code könnte man das realisieren:

    foo.xml

    Code:
    <?xml version="1.0"?>
    <message>
    <part>
    	<content>
    	Hier steht drin, was ich benötige (1)
    	</content>
    </part>
    <part>
    	<content>
    	Hier steht drin, was ich benötige (2)
    	</content>
    </part>
    <part>
    	<content>
    	Hier steht drin, was ich benötige (3)
    	</content>
    </part>
    </message>
    foo_parse.php

    PHP-Code:
    <?php
    $xml_filename
    ="foo.xml";
    $xml_parser_handle xml_parser_create();

    if(!(
    $parse_handle fopen($xml_filename'r'))) {
        die(
    "Fehler! Datei $xml_filename nicht gefunden!");
    }

    while(
    $xml_data fread($parse_handle4096))
    {
        if(!
    xml_parse_into_struct($xml_parser_handle$xml_data$werte$index)) {
            die(
    sprintf('XML Error: %s at Line %d',
            
    xml_error_string(xml_get_error_code($xml_parser_handle)),
            
    xml_get_current_line_number($xml_parser_handle)));
        }
    }
    xml_parser_free($xml_parser_handle);

    foreach(
    $index['CONTENT'] as $content) {
        echo 
    $werte[$content]['value'].'<br>';
    }
    ?>

    Kommentar


    • #3
      Danke für das Script. Ein ähnliches Script hatte ich auch schon und habe die Fehlermeldung "XML Error: junk after document element at Line 123" bekommen. Auch bei Deinem Script ist das so. Woran kann es denn liegen?
      Konzeption * Development * Marketing
      http://www.hirschfeld-software.info

      Kommentar


      • #4
        Falsches encoding vielleicht. Probier mal UTF-8
        "Ach was soll's? Dann bau ich mir halt meinen eigenen Vergnügungspark mit Blackjack und Nutten." - Bender

        Kommentar


        • #5
          Hi, den XML-String kann ich nicht verändern, den bekomme ich übermittelt und der ist schon UTF8. Hoffe es hat noch jemand eine Idee...
          Konzeption * Development * Marketing
          http://www.hirschfeld-software.info

          Kommentar


          • #6
            Besser spät als nie für alle, die hier über Google landen:


            Kann es sein, dass du das den Parser doppelt verwendest - also zuerst eine Datei mit xml_parse_sonstwas($parser) einliest und dann noch eine?

            Die Parser-Ressource speichert nämlich vorherige Eingaben - und wenn man sie nicht zerstört (xml_parser_free) und neu erstellt dann kommt's zu genau diesem Fehler.

            Kommentar

            Lädt...
            X