phpbar.de logo

Mailinglisten-Archive

[php] XML parsen

[php] XML parsen

Friedhelm Betz holliwell at gmx.net
Mon Jun 21 13:29:35 CEST 2004


Hi Tim,

>  > Nun erweisen sich beim Parsen die deutschen Sonderzeichen als
>  > ein Problem.
>  > Ich kann sie leider nicht als "ü" etc in das XML File
>  > schreiben, den
>  > dann bekomme ich einen Fehler beim parsen durch "&".
>  > Und hier in Sydney(AU) steht mir leider nur englische Software
>  > und Keyboards zur Verfuegung.
>  > Was das direkte eingeben sehr umstaendlich macht "copy paste"
>  > ist da sicher nicht sehr schoen.
>
> ich zitiere mal aus http://www.xml.com/pub/a/98/08/xmlqna1.html :
>
> In XML eingebaut sind nur
>
>    &lt;    =  <
>    &gt;    =  >
>    &amp;   =  &
>    &apos;  =  '
>    &quot;  =  "
>
> Genau für Dein Problem gibt's "Character References". Falls Dein XML in
> ISO-8859-1 ist, schreibst Du einfach:
>
>    &#252;
>
> für ein "ü" - die Zahlen kannst Du einfach in einer ASCII-Tabelle
> nachsehen. Falls Dein XML in UTF-8 ist, schreibst Du statt der
> ASCII-Zahl den Unicode-Codepoint.
>
> Sven, Dein Vorschlag scheint mir nicht viel Sinn zu machen.
>
>  > Erstelle eine "dateinname.dtd" mit folgendem Inhalt
>  >
>  > <!ENTITY uuml "uuml">
>  >
>  > dann bindest du die Datei in dein XML File ein
>  >
>  > <?xml version="1.0" encoding="iso-8859-1"?>
>  > <!DOCTYPE test SYSTEM "../src/dtd/test.dtd">
>  >
>  > und dann kannst du auch "&uuml;" in deinem XML File benutzen.
>
> Wenn Du Dir mal ansiehst, was ein XML-Parser damit macht (z.B. PHP's
> XML-Funktionen, Internet Explorer, xmllint auf der Kommandozeile), dann
> wirst Du feststellen, daß er das "&uuml;" im XML-Quelltext durch "uuml"
> ersetzt - definitiv kein "ü".
>
> Jens, wenn Du gerne die HTML-Umlaut-Entities benutzen möchtest
> (einfacher zu merken als die ASCII-Codes), dann geht das so:
>
> <?xml version="1.0" encoding="ISO-8859-1"?>
> <!DOCTYPE test [
> <!ENTITY uuml "&#252;">
> ]>
> <test>&uuml;</test>

Was spricht dagegen, das korrekte Encoding im xmlfile anzugeben und dieses 
natürlich auch im korrekten Encoding zu speichern?
<?xml version="1.0" encoding="ISO-8859-1"?>
<test>
 <umlaute>
   äöüß
 </umlaute>
</test>

Das funktioniert problemlos, auch z.B. xmllint kann damit sehr wohl umgehen.
Das erspart einem die ganze Mühe mit Character References etc. 
Wers nicht glaubt, kann sich die xml-sourcen vom PHP-Manual anschauen;-)

Grüße
Friedhelm


php::bar PHP Wiki   -   Listenarchive