2013-05-04 2 views
0

Я использую синтаксический анализатор stax для чтения 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] сообщение: Содержание не доступно в прологе.

Я не могу изменить подпись общей ави. Мне нужно работать на входном потоке .. любые предложения?

ответ

0

Использовать createXMLEventReader(InputStream stream, String encoding) с UTF-16 как encoding.

+0

Мой код должен работать для UTF-8 и UTF-16 или любой другой действующей кодировки. Итак, мне нужен общий способ, который работает – user2349699

+0

@ user2349699: Невозможно. См. Http://stackoverflow.com/a/14196597/309483 –

Смежные вопросы