In meiner Umgebung verwende ich Java, um die Ergebnismenge in XML zu serialisieren. Es passiert grundsätzlich so:
%Vor%Das XML sieht in Firefox so aus:
%Vor%Aber wenn ich das XML analysiere, bekomme ich das a
org.xml.sax.SAXParseException: Zeichenreferenz " & amp; # 26 " ist ein ungültiges XML-Zeichen.
Meine Frage ist jetzt: Welche Zeichen muss ich ersetzen oder wie muss ich meine Zeichen kodieren, damit sie gültiges XML sind?
Ich habe eine interessante Liste in der Xml Spec gefunden: Gemäß dieser Liste wurde davon abgeraten, das Zeichen # 26 (Hex: # x1A ) zu verwenden.
Die in der Folgende Bereiche werden ebenfalls abgeraten. Sie sind entweder Steuerzeichen oder permanent undefiniert Unicode Zeichen
Siehe die vollständigen Bereiche .
Dieser Code ersetzt alle ungültigen Xml Utf8 von einem String:
%Vor%Es stammt aus Ungültigen XML-Zeichen: wenn gültiges UTF8 nicht bedeutet gültiges XML
Aber damit hatte ich noch das UTF-8 Kompatibilitätsproblem:
%Vor%Nach dem Lesen XML - Rückgabe von XML als UTF-8 aus ein Servlet Ich habe gerade ausprobiert, was passiert, wenn ich den Inhaltstyp wie folgt einstelle:
%Vor%Und es hat funktioniert ....
Extensible Markup Language (XML) 1.0 sagt:
Das kaufmännische Und-Zeichen (& amp;) und der Die linke spitze Klammer (& lt;) darf nicht erscheinen in ihrer wörtlichen Form, außer wenn als Markup-Trennzeichen oder innerhalb von Kommentar, eine Verarbeitungsanweisung, oder ein CDATA-Abschnitt. Wenn sie benötigt werden anderswo müssen sie mit Hilfe entkommen entweder numerische Zeichenreferenzen oder die Saiten "& amp;" und "& lt;" beziehungsweise. Der rechte Winkel (& gt;) kann unter Verwendung der String "& gt;", und muss, z Kompatibilität, mit entweder entkommen lassen "& gt;" oder eine Zeichenreferenz wenn Es erscheint in der Zeichenfolge "]] & gt;" im Inhalt, wenn diese Zeichenfolge nicht ist Markieren Sie das Ende eines CDATA-Abschnitts.
Sie können die Codierung überspringen, wenn Sie CDATA verwenden:
%Vor%Welche Version von JRE laufen Sie? Sax Projekt sagt:
J2SE 1.4 bündelt eine alte Version von SAX2. Wie stelle ich SAX2 r2 oder später zur Verfügung?