有一个使用JavaRCP生成xml文件的JAXB应用程序,它基本上从文本框中获取输入(也包括特殊字符)保存到xml中,并通过从xml中解组来显示相同的内容。
用户正在复制控制台输出(可能包含特殊字符)并粘贴到文本框中并将其保存为XML。

xml version="1.0" encoding="UTF-8"

jaxb version is 2.1.10 in JDK 1.6_21.

When unmarshalling, receiving an unmarshall exception:

[org.xml.sax.SAXParseException: An invalid XML character (Unicode: 0x1b) was found in the element content of the document]

解组XML时发现无效的XML字符。我在这个论坛上搜索了一些帮助,发现了一些链接,但没有一个解决方案或解决办法。有人能指引我吗?
我尝试过其他编码类型,但没有成功。在保存/封送处理之前,是否需要用等效的字符代码替换该字符?
以下是更接近我的问题的链接:
Saving an escape character 0x1b in an XML file
Invalid Characters in XML

最佳答案

aJAXB bug report describing this problem被关闭,解释如下:
抱歉,这只是XML中的一个限制。
在XML中,不允许使用控制字符。查看允许字符列表
http://www.w3.org/TR/REC-xml/#NT-Char
这不是逃避的问题。
像\u001c这样的字符在XML中根本不是一个有效的字符。
无法传输包含这些字符的字符串。
你的选择是要么想出你自己的字符串编码方案
字符串“xml-safe”,或使用二进制编码,如base64。
因此,绝对没有办法用xml表示这些字符。如果这些字符串的精确表示对应用程序不重要,则可以删除这些字符或用一些占位符替换它们,否则必须使用一些安全的编码方案(如base64)对这些字符串进行编码。

10-05 21:11
查看更多