Stax 解析器无法读取编码为 UTF-16 的文件
Posted
技术标签:
【中文标题】Stax 解析器无法读取编码为 UTF-16 的文件【英文标题】:Stax parser fails to read files with encoding UTF-16 【发布时间】:2013-04-28 18:10:19 【问题描述】:我正在使用 stax 解析器在我的应用程序的一个公共 api 中读取一个 xml 文件。该api将输入流作为参数,我正在做类似下面的事情
public Object <commonApi>(InputStream is)
XMLInputFactory inputFactory = XMLInputFactory.newInstance();
XMLEventReader reader = inputFactory.createXMLEventReader(is);
try
while (parser.hasNext())
XMLEvent event = parser.nextEvent();
// reaming parsing logic
Catch (Exception e)
e.printStackTrace();
如果 xml 文件中的编码是 UTF-8,则问题是这样的。如果是 UTF-16,那么它不能正确读取..给出以下异常
javax.xml.stream.XMLStreamException: ParseError at [row,col]:[1,41] 消息:prolog 中不允许有内容。
我无法更改通用 api 的签名。我需要对输入流进行操作.. 有什么建议吗?
【问题讨论】:
【参考方案1】:使用createXMLEventReader(InputStream stream, String encoding)
和UTF-16
作为encoding
。
【讨论】:
我的代码必须适用于 UTF-8 和 UTF-16 或任何其他有效编码。所以,我需要一种通用的方法以上是关于Stax 解析器无法读取编码为 UTF-16 的文件的主要内容,如果未能解决你的问题,请参考以下文章
DOM、SAX 和 StAX XML 解析器之间有啥区别? [关闭]