entfernen von ungültigen XML-Zeichen aus einem string in java
Hi
ich möchte zum entfernen aller ungültigen XML-Zeichen aus einem string.
ich möchte einen regulären Ausdruck zu verwenden, die mit der Zeichenfolge.replace-Methode.
wie
line.replace(regExp,"");
was ist die richtige regExp zu verwenden ?
ungültige XML-Zeichen ist alles, was nicht diesem :
[#x1-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]
Dank.
InformationsquelleAutor der Frage yossi | 2010-11-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Java regex unterstützt, die zusätzliche Zeichenso können Sie angeben, denen hohe Reichweiten mit zwei UTF-16-codierten Zeichen.
Hier ist das Muster für das entfernen von Zeichen, die illegal in XML 1.0:
Meisten Menschen wollen, dass die XML-version 1.0.
Hier ist das Muster für das entfernen von Zeichen, die illegal in XML-1.1:
Müssen Sie
- String.replaceAll(...)
und nichtString.replace(...)
.InformationsquelleAutor der Antwort McDowell
Sollten wir Ersatzzeichen? sonst '(aktuelle >= 0x10000) && (aktuelle <= 0x10FFFF) " wird niemals wahr sein.
Auch getestet, dass die regex-Weg scheint langsamer als die folgende Schleife.
InformationsquelleAutor der Antwort Jun
Jun-Lösung, vereinfacht. Mit
StringBuffer#appendCodePoint(int)
ich brauche keinechar current
oderString#charAt(int)
. Ich kann sagen, ein ersatzpaar mit der überprüfung, obcodePoint
größer ist als0xFFFF
.(Es ist nicht erforderlich, i++, da ein niedriges Surrogat würde nicht den filter passieren. Aber dann würde man re-verwenden Sie den code für die verschiedenen code-Punkte und es würde fehlschlagen. Ich bevorzuge Programmierung zu hacken.)
InformationsquelleAutor der Antwort Vlasec
Vom Daneben McLaren ' s Weblog
InformationsquelleAutor der Antwort Renaud
Alle diese Antworten, die bisher nur ersetzen Sie das Zeichen selbst. Aber manchmal ist ein XML-Dokument wird mit ungültigen XML-entity-Sequenzen resultiert in Fehler. Zum Beispiel, wenn Sie

in Ihrer xml -, java-xml-parser werfenIllegal character entity: expansion character (code 0x2 at ...
.Hier ist ein einfaches java-Programm ersetzen kann, dass diese ungültig Person-Sequenzen.
InformationsquelleAutor der Antwort Nicholas DiPiazza
Vom Beste Art und Weise zum codieren von text-Daten für XML-Daten in Java?
InformationsquelleAutor der Antwort Roger F. Gay
Wenn Sie wollen, um text zu speichern Elemente mit den Verbotenen Zeichen in XML-form, die Sie verwenden können, XPL, statt. Das dev-kit ermöglicht den gleichzeitigen XPL zu XML und XML-Verarbeitung, was bedeutet, keine Zeit Kosten, um die übersetzung aus dem XPL-XML. Oder, wenn Sie nicht brauchen die volle Leistung von XML (namespaces) können Sie nur verwenden, XPL.
Web-Seite: HLL XPL
InformationsquelleAutor der Antwort Roger F. Gay
InformationsquelleAutor der Antwort Hans Schreuder
Ich glaube, dass der folgende Artikel kann Ihnen dabei helfen.
http://commons.apache.org/lang/api-2.1/org/apache/commons/lang/StringEscapeUtils.html
http://www.javapractices.com/topic/TopicAction.do?Id=96
Kurz, versuchen, Sie zu nutzen StringEscapeUtils aus dem Jakarta-Projekt.
InformationsquelleAutor der Antwort AlexR