1

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

4

1 回答 1

1

createXMLEventReader(InputStream stream, String encoding)UTF-16as一起使用encoding

于 2013-05-04T12:19:23.667 回答