2017-12-25 18 views
0

私はjavax.xml.bind.UnmarshallerでXML文字列を非整列化しようとしているが、次のエラーを受けています:JavaのアンマーシャリングXML

Caused by: org.xml.sax.SAXParseException: An invalid XML character (Unicode: 0x13) was found in the element content of the document. 

は、入力文字列からすべての違法なXML文字を削除する任意のユニバーサルソリューションがありますか?

は例えば、私は次のいずれかを使用しようとしたが、それは助けにはならない:

public static String illegalXML11CharactersPattern = "[^" 
     + "\u0001-\uD7FF" 
     + "\uE000-\uFFFD" 
     + "\ud800\udc00-\udbff\udfff" 
     + "]+"; 

public static String stripNonValidXML11Characters(String xml) { 
    return xml.replaceAll(illegalXML11CharactersPattern, ""); 
} 
+0

あなたはあなたのXMLに目を通す必要があります。 '0x13'は実際には"キャリッジリターン "です。おそらくXMLタグや属性のどこかにあります。実際には、XML値には5つのXML無効な文字しかありません:http://keylimetie.com/blog/2008/9/25/how-to-safely-escape-in​​valid-xml-characters/ – Vadim

答えて

0

は最後に、私は次のようなアプローチを終え:

xml = org.apache.commons.lang3.StringEscapeUtils.unescapeXml(StringEscapeUtils.escapeXml10(xml)); 
関連する問題