powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / StAX и кодировки xml-файлов
5 сообщений из 5, страница 1 из 1
StAX и кодировки xml-файлов
    #38805147
mesier
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пишу класс, в котором вручную с помощью StAX буду парсить xml-ки.
Код вида:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
    public void parseCimProfile(InputStream in) {
        XMLInputFactory factory = XMLInputFactory.newInstance();
        try {
            Reader reader = new InputStreamReader(in);
            XMLEventReader eventReader = factory.createXMLEventReader(reader);
            while(eventReader.hasNext()){
                XMLEvent event = eventReader.nextEvent();
                if(event.getEventType() == XMLStreamConstants.START_ELEMENT) {
                    StartElement startElement = event.asStartElement();
                    String element = startElement.getName().getLocalPart();
                    if (element.equalsIgnoreCase("Class")) {
                        System.out.println(element);
                    }
                }
            }            
        } catch (XMLStreamException e) {
            Logger.getLogger(CimService.class.getName()).log(Level.SEVERE, "message", e);
        }


Некоторые xml-ки идут с маркером последовательности (BOM) в заголовке файла, и тогда получаю ошибку.
Код: html
1.
2.
3.
4.
5.
6.
13-Nov-2014 16:35:25.126 SEVERE [http-apr-8080-exec-12] null.null message
 javax.xml.stream.XMLStreamException: ParseError at [row,col]:[1,1]
Message: Content is not allowed in prolog.
        at com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl.next(Unknown Source)
        at com.sun.xml.internal.stream.XMLEventReaderImpl.nextEvent(Unknown Source)
        at ru.epsa.cim.service.CimService.parseCimProfile(CimService.java:91)


Но некоторые без BOM, поэтому мне нужно бы и так и эдак работать.
Как быть?
...
Рейтинг: 0 / 0
StAX и кодировки xml-файлов
    #38805204
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mesier,

1) У вас в конструкторе InputStreamReader не указана кодировка.
2) Возможно подключение сторонней реализации StAX в classpath решит проблему. BOM достаточно стандартная штука. Должна поддерживаться.
3) Можно InputStream обернуть в откатываемый Stream из Apache Commons IO, вычитывать первый, если он <, то откатывать. Если BOM - то скипать 3 символа, тогда парсер начнет читать с <
...
Рейтинг: 0 / 0
StAX и кодировки xml-файлов
    #38805222
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mesier,

Например, вот тут исправили.
http://jira.codehaus.org/browse/WSTX-10
...
Рейтинг: 0 / 0
StAX и кодировки xml-файлов
    #38805224
YamahaR1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
StAX и кодировки xml-файлов
    #38805951
mesier
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, попробую..
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / StAX и кодировки xml-файлов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]