java - 使用 javax.xml.stream.XMLStreamReader 时如何启用非 IANA 编码

标签 java xml-parsing stax

我正在使用 javax.xml.stream.XMLStreamReader 来解析 XML 文档。不幸的是,我正在解析的一些文档使用非 IANA 编码名称,例如“macroman”和“ms-ansi”。例如:

<?xml version="1.0" encoding="macroman"?>
<foo />

这会导致解析失败并出现异常:

javax.xml.stream.XMLStreamException: ParseError at [row,col]:[1,42]
Message: Invalid encoding name "macroman".

有什么方法可以为我的 XMLStreamReader 提供自定义编码处理程序,以便我可以通过支持我需要的编码来增强它?

最佳答案

您可以使用转换器包装输入流,将非标准字符集替换为 XMLStreamReader 能够理解的等效字符集。

参见 Filter (search and replace) array of bytes in an InputStream

关于java - 使用 javax.xml.stream.XMLStreamReader 时如何启用非 IANA 编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50750765/

相关文章:

xml - 为给定的 XML 模式生成 Stax Writer API

java - 在play Framework 2.0中将变量分配给java列表

java - 使用 javamail 向 hotmail 发送电子邮件时遇到问题

python - 在Python中添加父节点编号关系的表格XML文件

android - XML 解析给出 NullPointerException Error with Asynctask

java - 如何使用 StAX 解析器事件读取器 api 读取评论

java - 有很多数据字段是一件坏事吗?

java - spring boot 将 jsp 加载为 txt?

基于属性值的XML验证(不同的子标签)

java - Apache POI 和 XMLConstants 冲突