gpt4 book ai didi

java - 如何使用 JAXB 从 XML 写入和读取特殊字符和符号

转载 作者:数据小太阳 更新时间:2023-10-29 02:58:25 27 4
gpt4 key购买 nike

有一个 JavaRCP 应用程序,它使用 JAXB 生成 XML 文件,它基本上从文本框中获取输入(以及特殊字符)以保存在 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

最佳答案

A JAXB bug report describing this problem已关闭,解释如下:

Sorry, this is simply a restriction in XML.

In XML, control characters are not allowed. See the list of allowed characters at http://www.w3.org/TR/REC-xml/#NT-Char

This is not a matter of escaping http://www.w3.org/TR/REC-xml/#sec-references. Those characters like \u001C is simply not a valid character to have in XML. There's no way to transfer strings that contain those characters.

Your option is either to come up with your own string encoding scheme to make your string "XML-safe", or use binary encoding such as base64.

因此,绝对没有办法在 XML 中表示这些字符。如果这些字符串的精确表示对您的应用程序并不重要,您可以删除这些字符或用一些占位符替换它们,否则您必须使用一些安全的编码方案(例如 Base64)对这些字符串进行编码。

关于java - 如何使用 JAXB 从 XML 写入和读取特殊字符和符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10121717/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com