Переопределите реализацию Xerces для создания XMLEventReader через XMLInputFactory.

Версия Xerces, которая поставляется с Java, имеет ошибка при работе с пустыми элементами XML для ввода XML версии 1.1. Эта ошибка уже давно исправлена ​​в версии Apache Xerces (начиная с версии 2.6.2).

Я хочу создать XMLEventReader через интерфейс XMLInputFactory. Что-то вроде этого:

XMLInputFactory.newFactory().createXMLEventReader(new FileInputStream(inputFile));

Простое размещение банок Xerces в пути к классам здесь не работает. На самом деле я не вижу, чтобы выпуск Apache Xerces расширял XMLInputFactory, что кажется необходимым условием для создания фабрики ввода для конкретной реализации.

Есть ли способ заставить XMLInputFactory.newFactory использовать выпуск Apache Xerces из пути к классам?


person jhunovis    schedule 06.06.2013    source источник
comment
Это может помочь. Вам нужно установить системное свойство, чтобы сообщить фабрике, какой класс создавать.   -  person Boris the Spider    schedule 06.06.2013
comment
К сожалению, у Xerces нет реализации XMLInputFactory. По крайней мере, я не мог найти ни одного.   -  person jhunovis    schedule 06.06.2013
comment
Есть новости по этому поводу? У меня очень похожая проблема в Java 10.   -  person Basilevs    schedule 14.08.2018


Ответы (1)


Пытаться

    <dependency>
        <groupId>xerces</groupId>
        <artifactId>xercesImpl</artifactId>
        <version>2.11.0</version>
    </dependency>

эта версия включает в себя StAX и автоматически переопределяет внедрение StAX по умолчанию, используя механизм jar Service Provider.

person Evgeniy Dorofeev    schedule 06.06.2013
comment
К сожалению, наш проект не использует Maven. Все библиотеки устанавливаются с помощью установки пути к классам. - person jhunovis; 06.06.2013
comment
Все в порядке, просто скачайте jar xerces 2.11.0 отсюда xerces.apache.org/mirrors.cgi - person Evgeniy Dorofeev; 06.06.2013
comment
Кажется, это не работает. Я попробовал пример кода из вопроса связан в моем вопросе только с вашей зависимостью Maven от Xerces 2.11. - person jhunovis; 06.06.2013