2013-05-04 33 views
0

我正在使用stax解析器來讀取我應用程序中通用api內的xml文件。該API採用的InputStream作爲參數,我在做類似下面Stax解析器無法讀取編碼爲UTF-16的文件

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,然後它不讀取properly..gives以下異常

javax.xml.stream.XMLStreamException:ParseError在[行,列]:[1,41] 消息:序言中不能有內容。

我無法更改通用api的簽名。我需要對輸入流進行操作..有什麼建議嗎?

回答

0
+0

我的代碼必須適用於UTF-8和UTF-16或任何其他有效的編碼。所以,我需要一個通用的方式, – user2349699 2013-05-04 12:31:04

+0

@ user2349699:不可能的。請參閱http://stackoverflow.com/a/14196597/309483 – 2013-05-04 12:37:34