XMLEventReader returns STAX
XMLEventReader returns STAX
我正在使用 XMLEventReader 来解析大 xml 文件,它在一个项目中工作正常,但是当我使用相同的导入导入相同的 class在另一个项目中,它没有很好地解析 xml,它给出了 STAX Event
.
下面是我的代码:
XMLInputFactory factory = XMLInputFactory.newInstance();
XMLEventReader eventReader = factory.createXMLEventReader(new FileReader(exportedFilePath));
我调试并检查了 eventReader,在 属性 中工作的项目中是 f,在不工作的项目中是 m.
我无法捕获异常,因为它是相同的 class 和相同的导入..
以下是导入:
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;
可能是类路径问题引起的。
可能是在您的 class 之前加载了另一个具有相同名称的 class(它甚至可能在框架内或在运行时环境中)阻止加载您引用的 class,例如不同版本的 stax 解析器。
您有三个选择:
尝试找出该环境中存在的 StAX 解析器的版本,并根据它编译您的代码
为您的库使用自己的 classloader/container,这将保证加载正确的版本,
尝试重新排序 class你的 lib 排在第一位的路径 - 虽然它可能会破坏其他地方的系统,所以我真的不推荐。
这应该有帮助:
System.setProperty("javax.xml.stream.XMLInputFactory", "com.sun.xml.internal.stream.XMLInputFactoryImpl");
我正在使用 XMLEventReader 来解析大 xml 文件,它在一个项目中工作正常,但是当我使用相同的导入导入相同的 class在另一个项目中,它没有很好地解析 xml,它给出了 STAX Event
.
下面是我的代码:
XMLInputFactory factory = XMLInputFactory.newInstance();
XMLEventReader eventReader = factory.createXMLEventReader(new FileReader(exportedFilePath));
我调试并检查了 eventReader,在 属性 中工作的项目中是 f,在不工作的项目中是 m.
我无法捕获异常,因为它是相同的 class 和相同的导入..
以下是导入:
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;
可能是类路径问题引起的。
可能是在您的 class 之前加载了另一个具有相同名称的 class(它甚至可能在框架内或在运行时环境中)阻止加载您引用的 class,例如不同版本的 stax 解析器。
您有三个选择:
尝试找出该环境中存在的 StAX 解析器的版本,并根据它编译您的代码
为您的库使用自己的 classloader/container,这将保证加载正确的版本,
尝试重新排序 class你的 lib 排在第一位的路径 - 虽然它可能会破坏其他地方的系统,所以我真的不推荐。
这应该有帮助:
System.setProperty("javax.xml.stream.XMLInputFactory", "com.sun.xml.internal.stream.XMLInputFactoryImpl");