XMLEventReader返回STAX

时间:2019-01-25 09:25:03

标签: java stax

我正在使用 XMLEventReader 解析大型xml文件,它在一个项目中运行良好,但是当我在另一个项目中导入具有相同导入的相同类时,它不能很好地解析xml,并且class AbstractBaseUser(models.Model): password = models.CharField(_('password'), max_length=128) last_login = models.DateTimeField(_('last login'), blank=True, null=True) is_active = True REQUIRED_FIELDS = [] # Stores the raw password if set_password() is called so that it can # be passed to password_changed() after the model is saved. _password = None class Meta: abstract = True def save(self, *args, **kwargs): super().save(*args, **kwargs) if self._password is not None: password_validation.password_changed(self._password, self) self._password = None def set_password(self, raw_password): self.password = make_password(raw_password) self._password = raw_password

下面是我的代码:

STAX Event

我调试并检查了EventReader,在属性中为f的项目中,属性为f,在项目中,m无效。

enter image description here

enter image description here

我无法捕获异常,因为它是相同的类和相同的导入。.

以下是进口:

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

2 个答案:

答案 0 :(得分:1)

这应该有所帮助:

System.setProperty("javax.xml.stream.XMLInputFactory", "com.sun.xml.internal.stream.XMLInputFactoryImpl");

答案 1 :(得分:0)

它可能是由Classpath问题引起的。

可能是另一个具有相同名称的类在您的类之前加载(甚至可能在框架中或在运行时环境中),从而阻止了加载您引用的类,例如stax解析器的其他版本。 / p>

您有三个选择:

  • 尝试找出该环境中存在的StAX解析器的版本,并针对该版本编译您的代码

  • 为您的lib使用自己的类加载器/容器,这将确保加载正确的版本,

  • 尝试重新排序以lib为首的classpath-尽管它可能会损坏其他系统,所以我不建议这样做。