String-Problem bei xml_parse

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

  • String-Problem bei xml_parse

    Hallo,

    ich hoffe ihr versteht mich und hattet auch schon mal dieses Problem.

    Ich parse mein XML so :
    PHP-Code:
    xml_set_element_handler($objXMLParser"getStartTag""getEndTag");
    xml_set_character_data_handler($objXMLParser"getTagData"); 
    In der Funktion getData verarbeite ich den Wert eines XML-Tags.
    Dabei ist mir eine Eigenart aufgefallen, die ich nicht ganz versteh.

    Hab ich z.B.
    <group>Allergie & Heuschnupfen</group>
    bricht er mit dem Auslesen des Wertes, vor und nach dem & ab.

    Ich bekomm statt in einem Durchlauf der Funktion getData "Allergie & Heuschnupfen" in 3 Durchläufen
    1. Durchlauf: "Allergie"
    2. Durchlauf: "&"
    3. Durchlauf: "Heuschnupfen"

    Das gleiche tritt auch bei Umlauten wie ö,ä,ü auf. Hat jemand eine Idee wie ich das beheben kann.
    Bei folgendem Link wurde das Problem auch schonmal erörtert:

    http://blog.t8d.de/2008/05/19/xml_se...are-of-chunks/

    Danke!

  • #2
    1. & ist in einem XML Dokument verboten! Du suchst & a m p ;

    2. schon mal XML_OPTION_SKIP_WHITE ausprobiert?

    3. Umlaute: Evtl. ein codierungs Problem,
    Zuletzt geändert von combie; 18.11.2008, 12:15.
    Wir werden alle sterben

    Kommentar


    • #3
      Danke!

      Aber & ist hier egal, weil in & a m p ; ja auch eins ist.
      Läuft alles unter UTF-8.
      XML_OPTION_SKIP_WHITE ändert auch nix an dem Problem!

      Weitere Ideen?

      Google die ganze Zeit, hab zwar welche gefunden die das Problem auch hatten, aber eine Lösung konnte ich noch nicht finden!
      Zuletzt geändert von ; 18.11.2008, 12:33.

      Kommentar


      • #4
        Tja, dann wirst du wohl auf simplexml oder dom umsteigen müssen..
        Wir werden alle sterben

        Kommentar


        • #5
          Nicht nötig, hab eine Lösung gefunden...bzw. ein workaround.

          auch wenn in der Funktion getTagData so ein Zeichen vorkommt und er dort die Funktion wieder verlässt, geht er trotzdem wieder in getTagData rein bevor, bis er den ganzen Inhalt des Wertes erfasst hat, und erst das wird die Funktion getEndData aufgerufen.
          Also speicher ich den Wert zwischen und erweitere ihn immer, und erst in getEndTag verarbeite ich ihn.

          Kommentar

          Lädt...
          X