我正在使用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

10-07 15:41