Ich habe mich gefragt, ob es eine Möglichkeit gibt, ein CDATA-End-Token ( ]]>
) in einem CDATA-Abschnitt in einem XML-Dokument zu umgehen. Oder allgemeiner, wenn es eine Escape-Sequenz für die Verwendung innerhalb einer CDATA gibt (aber wenn sie existiert, wäre es wahrscheinlich nur sinnvoll, Anfangs- oder End-Token zu maskieren).
Grundsätzlich können Sie ein Start- oder End-Token in eine CDATA einbetten und den Parser anweisen, es nicht zu interpretieren, sondern es nur als eine andere Zeichenfolge zu behandeln.
Wahrscheinlich sollten Sie einfach Ihre XML-Struktur oder Ihren Code umgestalten, wenn Sie dies versuchen, aber obwohl ich in den letzten 3 Jahren täglich mit XML gearbeitet habe und dieses Problem nie hatte, Ich habe mich gefragt, ob es möglich ist. Nur aus Neugier.
Bearbeiten:
Anders als die Verwendung von HTML-Codierung ...
CDATA
wurde entwickelt, um alles zuzulassen : Sie werden verwendet, um Textblöcken zu entkommen, die Zeichen enthalten, die ansonsten als Markup erkannt würden. Dies impliziert CDATA
auch, da es sich auch um Markup handelt. Tatsächlich benötigen Sie jedoch nicht die von mir implizierte Doppelkodierung. ]]>
ist ein akzeptables Mittel zum Codieren von a CDEnd
innerhalb von a CDATA
.
>
wie>
in CData zu codieren, um sicherzustellen, dass Embedded]]>
nicht als CDEnd analysiert wird. Es bedeutet einfach, dass es unerwartet ist und dass&
ZUERST auch codiert werden muss,&
damit die Daten ordnungsgemäß decodiert werden können. Benutzer des Dokuments müssen wissen, dass sie auch diese CData dekodieren können. Dies ist nicht ungewöhnlich, da ein Teil des Zwecks von CData darin besteht, Inhalte zu enthalten, mit denen ein bestimmter Verbraucher umgehen kann. Es ist einfach nicht zu erwarten, dass eine solche CData von einem generischen Verbraucher richtig interpretiert wird.