当前位置: 首页 > 知识库问答 >
问题:

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

山翼
2023-03-14

有一个Javarcp应用程序,它使用JAXB生成XML文件,它基本上从textbox中获取输入(也包括特殊字符)保存为XML,并通过从XML反编组来显示。

用户正在复制控制台输出(可能包含特殊字符),粘贴在文本框中,并将其保存到XML中。

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

jaxb version is 2.1.10 in JDK 1.6_21.

解编组时,收到解编组异常:

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

解组XML时发现一个无效的XML字符。我在这个论坛上搜索了一些帮助,发现很少链接,但两个都没有解决方案或变通方法。有人能指引我吗。

我尝试过其他编码类型,但没有成功。在保存/编组之前,我需要用它的等效字符代码替换该字符吗?

以下是与我的问题更接近的链接:在XML文件中保存转义字符0x1b

共有1个答案

卜弘文
2023-03-14

描述此问题的JAXB bug报告以以下解释结束:

对不起,这只是XML中的一个限制。

在XML中,不允许使用控制字符。请参阅http://www.w3.org/tr/rec-xml/#nt-char上允许的字符列表

这不是转义http://www.w3.org/tr/rec-xml/#sec-references的问题。像\u001c这样的字符在XML中根本不是一个有效的字符。无法传输包含这些字符的字符串。

您可以选择使用自己的字符串编码方案来使字符串“XML安全”,或者使用二进制编码,如base64。

 类似资料:
  • 我有一个需求,需要从JAXB生成XML。我使用了基本对象,其中只有具有父子关系的键值对,但从未遇到过下面这样的情况。预期的XML 在Java对象中,我不知道如何使用特殊字符

  • 我正在尝试使用这种方法修改一个pdf(第一个代码块--使用PDFStreamParser并通过PDFOperator,然后在需要时更新COSString): http://www.coderanch.com/t/556009/open-source/pdfbox-replace-string-double-pdf 我有一些UTF-8字符(变音符)的问题:当我打印要更新的文本时,显示“societ?

  • 问题内容: 我正在阅读文件,但我不知道如何阅读口音和特殊字符,这是我阅读的代码,我必须添加其他编纂,但我不知道该怎么做 谢谢 问题答案: 请尝试以下操作:

  • 问题内容: 我正在尝试使用Java读取文件,并且该文件还包含特殊字符。我正在尝试将文件的内容写入另一个文件。 读取特殊字符文件的解决方案是什么? 问题答案: 您需要找出文件使用的确切编码,然后在参数中指定该编码。 尽管如此,通常最好通过将InputStream与InputStreamReader一起包装到Reader或BufferedReader中来读取字符数据 编辑注释: 使用Java的平台默认

  • 问题内容: 我正在为法国客户做一些工作,因此需要处理带重音符号的字符。但是我遇到了很多困难,希望解决方案很简单,并且有人可以向我指出。 字符串: 转换为: 请注意,带重音符号的字符缺失- 在 ê* 后面紧跟着 t ,在 é 后面紧跟着 m 。 * 我尝试使用StringEscapeUtils来成功转义某些字符,例如 ă 。我还构建了自己的转义功能,该功能产生相同的结果( ă 可以工作, ê 不会)

  • 问题内容: 我想在Winforms中编写一个小型应用程序,在其中我可以写一些单词,然后使用ADO.net将它们写到SQL数据库中。 当我想用一个占位符写一个字符串时遇到麻烦: 我的数据库中记录的是: 我该如何克服通过传输到我的数据库的C#更改字符串? 这是我的代码的一部分: 问题答案: 您使用参数化的sql。