phpbar.de logo

Mailinglisten-Archive

[php] Sonderzeichen + xmlparser

[php] Sonderzeichen + xmlparser

yankee yannikh at gmail.com
Die Sep 5 13:50:40 CEST 2006



Peter Bieling wrote:
> yankee wrote:
> 
> Willst Du so angesprochen werden. ;-)

*gg* Ist mir egal... Mein richtiger Name ist Yannik, wenn dir das lieber 
ist :-).
> 
>> Und zwar fängt mein Problem etwas vereinfacht bei einer solchen 
>> xml-Zeile an:
>>
>> <bla>ö&lt;abc</bla>
>>
>> Das ö führt zu einem "Invalid character" und damit zum Abbruch des parsens.
> 
> Versuch mal dies: <?xml version="1.0" encoding="ISO-8859-1"?>

Das war schonmal eine gute Idee... Jetzt kommt wenigstens kein invalid 
character Fehler mehr...Trotzdem funktioniert es mit UTF-8 als encoding 
nicht. Dabei is der ISO-Zeichensatz doch in ISO komplett enthalten, doer 
sehe ich das falsch...?
Ausserdem habe ich nochwas bemerkt: der character-Data-Handler wird bei 
Entitäten mehrmals aufgerufen. Da ich aber immer nur den ersten Aufruf 
beachtet habe, sind die Entitäten und alles, was dahinter steht immer 
abgeschnitten worden. :-(.
Wenigstens werden die <> jetzt korrekt ausgewertet.
Aber aus ö wird jetzt ö.
Sieht für mich nach einem Zeichensatzproblem aus... Aber ich habe den 
ISO-Zeichensatz doch jetzt angegeben... Was könnte da noch falsch sein...?
(Um ein Browseranzeigeproblem auszuschliessen habe ich in dem 
character-Data Handler auch mal htmlentities auf den ausgelesenen String 
angewendet.
> 
>> Bei dem &lt; gibt es zwar keinen Fehler, aber dafür ignoriert der Parser 
>> dieses auch und alles was noch in dem selben xmltag dahinter steht.
>>
>> Etwas Quelltext:
> [...]
> 
>> Was muss ich tun, damit ich Strings mit Sonderzeichen und <> auslesen 
>> kann..?
> 
> Für die Sonderzeichen richtige XML-Deklaration wählen, bzw. die 
> Sonderzeichen mit XML-konformen Entities darstellen.
> Das Problem, das ich sehe, ist dass Expat aus &lt; beim Parsen ein < 
> macht, also die XML-eigenen Sonderzeichen auflöst. Das gibt natürlich 
> Probleme, wenn man wieder XML ausgeben will.
Noch gebe ich testweise Text aus (also ich verwende schon einen Browser, 
schau mir aber immer den Quelltext an).
> Das muss man halt abfangen. Man kann sich auch mit CDATA-Abschnitten 
> behelfen.
Die meisten meiner xml-Inhalte sind recht kurz... Die CDATA Abschnitte 
würden die ganze Datei um ca. 20% Grösser machen. Und es darf ja kein 
]]> in den Elementen vorkommen :-(.
> 
> Viele Grüße
> 
> Peter
> 
> PS. Hiermit geht's vielleicht einfacher:
> http://www.media-palette.de/xml-line-0-4-3-6-alpha/

php::bar PHP Wiki   -   Listenarchive