um es ein wenig snobbistisch auszudrücken, stelle ich gerade fest, dass mein xml Wissen ein bischen rostig geworden ist. Aber & einfach in einer text-node zu verwenden, geht nicht so ohne weiteres.
(text node ist für mich alles, was zwischen <node>textNode</node> steht)
Man muss es durch & maskieren. Der xml Parser setzt es dann korrekt auf & zurück.
& wird als Einleitung einer Entity-Referenz gesehen.
Entities sind dafür da, um in einer dtd einen Inhalt zu definieren, der in den Text-Nodes mehrfach wiederverwendet wird.
so in der Art:
<!-- dtd -->
<!ENTITY copy "This text is protected by © copyright ">
<!-- irgendeine Node im Dokument -->
<tralala>
eins zwei drei vier.
©
</tralala>
Das & ist das Startzeichen für eine Entity-Referenz. Das ; ist das Endzeichen.
Der Parser sucht dann nach einem entity mit dem Namen copy.
Hier findet er eins.
copy ---> "This text is protected by © copyright "
.. und ersetzt die Entity-Referenz copy automatisch durch "This text is protected by © copyright ".
In dem Fall des problematischen Feeds sucht der Parser nach dem ; als Endzeichen der Entity-Referenz. (ich glaub bis zum ersten Leerzeichen ähem Whitespace) und findet keins. Damit ist die Fehlermeldung logisch.
Maskiert man das Anführungszeichen mit & wird es automatisch in & umgewandelt, ohne dass das so resultierende & wieder als Start einer neuen Entity-ref angesehen wird. Die folgenden Entities immer automatisch eingebaut (predefined):
& --> &
< --> <
> --> >
' --> '
" --> "
Wenn ich mich recht erinnere geht auch < nicht in Text-Nodes (es wird als Start eines neuen tags angesehen). > hingegen schon.
Ausserdem kann man ganze xml files in Entity refs referenzieren.
... und für Attribute gibt es nochmal neue Entity-ref Sonderregeln.
... und wo wir schonmal dabei sind, handelt es sich bei © um eine Character Referenz. Sie werden in die entsprechenden characters der unicode Tabelle umgesetzt. Hier ist es das copyright-Zeichen. Dezimal startet mit &#, hexadezimal mit &#x.
@Manfred: Ich finde keine Zeit das Ding auch tatsächlich mal auszuprobieren, aber ich werde dann auf dein Angebot zurückkommen...
Gruß Axel