venty: PHP + XML + Umlaute

Hallo,

habe hier eine XML Datei die regelmäßig aktualisiert wird und eingelesen werden soll. Diese kann 300 MB oder noch größer sein, daher kann ich nur den XML Parser und nicht simplexml verwenden.

Die XML enthält Umlaute die mir zu schaffen machen. Die Daten in der XML sollen eigentlich in die DB gespeichert werden aber zum testen will ich sie erst mal ausgeben.

Die XML Datei sollte eigentlich in UTF-8 sein.
<?xml version="1.0" encoding="UTF-8"?>

Auch der Parser ist auf UTF-8 gestellt (2 mal)

// creating parser object  
        $xml_parser = xml_parser_create('UTF-8');  
  
        // set encoding to UTF-8  
        xml_parser_set_option($xml_parser,  
                XML_OPTION_TARGET_ENCODING,  
                'UTF-8');

Trotzdem wird die Ausgabe der Funktion ...

function contents($parser, $data) {  
  
        // entferne störende zeichen  
        // $data = htmlentities($data);  
  
        echo $this->element.':        ';  
        echo $data;  
        echo "<br />";  
        $this->i++;  
  
        if ($this->i >= 100) die($this->i);  
    }

... bei jedem & Zeichen abgebrochen bzw geteilt. Beispiel:

destinationdescription: Die "Perle der Krim" z
destinationdescription: ählt zu den beliebtesten

Wenn ich selbst auf google suche wird immer auf die Codierung verweisen aber da ich diese 3 mal in UTF-8 habe sollte das Problem wo anders liegeb (oder?)

Wenn euch eine Info fehlt einfach sagen.
Hoffentlich könnt ihr mir helfen!

LG Venty

  1. Moin!

    Trotzdem wird die Ausgabe der Funktion ...

    function contents($parser, $data) {

    // entferne störende zeichen
            // $data = htmlentities($data);

    echo $this->element.':        ';
            echo $data;
            echo "<br />";
            $this->i++;

    if ($this->i >= 100) die($this->i);
        }

    
    >   
    > ... bei jedem & Zeichen abgebrochen bzw geteilt. Beispiel:  
    >   
    > destinationdescription: Die "Perle der Krim" z  
    > destinationdescription: ählt zu den beliebtesten  
      
    Warum sind da &-Zeichen? Welche &-Zeichen sind das? Was steht im XML-Sourcecode an dieser Stelle?  
      
    
    >   
    > Wenn ich selbst auf google suche wird immer auf die Codierung verweisen aber da ich diese 3 mal in UTF-8 habe sollte das Problem wo anders liegeb (oder?)  
      
    Ja, du hast eher ein Entity-Problem, wie es scheint. Encoding-Probleme sind allerdings natürlich nicht ausgeschlossen, aber wenn, dann eher anderswo. :)  
      
     - Sven Rautenberg
    
    1. Warum sind da &-Zeichen? Welche &-Zeichen sind das? Was steht im XML-Sourcecode an dieser Stelle?

      Es sind Umlaute, auch in der XML. Aber ich nehme mal an dass es da irgendeine Umwandlung gibt, zum Beispiel ä = &auml;. Auch wenn nur das & (&amp;) dort steht.

      Hab hier was gefunden aber ich glaube nicht dass dies die eleganteste Lösung für mein Problem ist :S

      1. Die Lösung hier ist zwar irgendwie komisch aber sie funktioniert :)

        Danke für die hilfe!

        LG Venty

  2. Hi,

    Die XML enthält Umlaute die mir zu schaffen machen. Die Daten in der XML sollen eigentlich in die DB gespeichert werden aber zum testen will ich sie erst mal ausgeben.

    kannst du die XML auf ein einfaches Beispiel zusammenschrumpfen, dass den Fehler enthält, und ein Codebeispiel, welches den Fehler reproduziert?

    Bis die Tage,
    Matti