XMLEventReader возвращает STAX - PullRequest
       10

XMLEventReader возвращает STAX

0 голосов
/ 25 января 2019

Я использую XMLEventReader для анализа больших файлов xml, и он отлично работает в одном проекте, но когда я импортирую тот же класс с тем же импортом в другом проекте, он плохо анализирует xml и дает STAX Event.

Ниже мой код:

    XMLInputFactory factory = XMLInputFactory.newInstance();
    XMLEventReader eventReader = factory.createXMLEventReader(new FileReader(exportedFilePath));

Я отлаживал и проверял EventReader и в проекте, где работает, находится свойство, и в проекте, где не работает, есть.м.

enter image description here

enter image description here

Не могу поймать исключение, потому что это тот же класс итот же импорт ..

Вот импорт:

import javax.xml.stream.XMLEventReader;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamConstants;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.events.Attribute;
import javax.xml.stream.events.Characters;
import javax.xml.stream.events.EndElement;
import javax.xml.stream.events.Namespace;
import javax.xml.stream.events.StartElement;
import javax.xml.stream.events.XMLEvent;

Ответы [ 2 ]

0 голосов
/ 25 января 2019

Это должно помочь:

System.setProperty("javax.xml.stream.XMLInputFactory", "com.sun.xml.internal.stream.XMLInputFactoryImpl");
0 голосов
/ 25 января 2019

Это может быть вызвано проблемой Classpath.

Возможно, что другой класс с таким же именем загружен до вашего класса (это может быть даже в рамках или в среде выполнения), который предотвращает загрузкууказанный вами класс, например, другая версия вашего анализатора stax.

У вас есть три варианта:

  • Попробуйте узнать версию синтаксического анализатора StAX, которая присутствует вэтой среды и скомпилируйте свой код против нее

  • Используйте собственный загрузчик классов / контейнер для вашей библиотеки, который будет гарантировать, что загружена правильная версия,

  • попытайтесь изменить порядок классов, чтобы ваша библиотека стояла первой - хотя это может повредить систему в другом месте, поэтому я не очень рекомендую.

...