我正在使用 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 的签名。我需要对输入流进行操作..有什么建议吗?