我正在使用 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无效。
我无法捕获异常,因为它是相同的类和相同的导入。.
以下是进口:
XMLInputFactory factory = XMLInputFactory.newInstance();
XMLEventReader eventReader = factory.createXMLEventReader(new FileReader(exportedFilePath));
答案 0 :(得分:1)
这应该有所帮助:
System.setProperty("javax.xml.stream.XMLInputFactory", "com.sun.xml.internal.stream.XMLInputFactoryImpl");
答案 1 :(得分:0)
它可能是由Classpath问题引起的。
可能是另一个具有相同名称的类在您的类之前加载(甚至可能在框架中或在运行时环境中),从而阻止了加载您引用的类,例如stax解析器的其他版本。 / p>
您有三个选择:
尝试找出该环境中存在的StAX解析器的版本,并针对该版本编译您的代码
为您的lib使用自己的类加载器/容器,这将确保加载正确的版本,
尝试重新排序以lib为首的classpath-尽管它可能会损坏其他系统,所以我不建议这样做。