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

Lau*_*ves 8 java stax xml-parsing

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

<?xml version="1.0" encoding="macroman"?>
<foo />
Run Code Online (Sandbox Code Playgroud)

这将导致解析异常,并导致异常:

javax.xml.stream.XMLStreamException: ParseError at [row,col]:[1,42]
Message: Invalid encoding name "macroman".
Run Code Online (Sandbox Code Playgroud)

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

Ric*_*ich 0

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

请参阅过滤(搜索和替换)InputStream 中的字节数组