可否考虑兼容旧版的dom4j?
目前开发的系统里,内置了旧版的dom4j,猜测是1.X版本的。运行时报错:
报错:java: The method createDefault() is undefined for the type org.dom4j.io.SAXReader
老版本的dom4j没有这个方法,可以替代为new SAXReader(); 我在本地修改源码后测试,除了以上构造方法修改外,需要修改:
org/ttzero/excel/reader/XMLDrawings.java:220、 org/ttzero/excel/reader/XMLDrawings.java:296
for (Object obj : root.elements()) { Element e = (Element) obj;
简单测试目前ecc对dom4j的依赖不深,兼容性较好。是否可以考虑修改代码,兼容早期版本的dom4j?
贴一下你正在使用的pom或者gradle配置
低版本的dom4j有XXXE漏洞,能够在服务器远程执行命令,高版本createDefault添加了以下三个feature,线上服务的话最好还是使用高版本dom4j
reader.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
reader.setFeature("http://xml.org/sax/features/external-general-entities", false);
reader.setFeature("http://xml.org/sax/features/external-parameter-entities", false);
是一个内网使用的老美的商业系统里,官方提供的jar包里包含了dom4j的class,不是使用maven、gradle构建的。不知道是哪个版本的。 老的确实有缺陷,但是商业系统也没办法。新系统都是用的新版的。但是希望在团队内部都使用同样的工具,所以希望您这边能考虑兼容一下。
可以考虑,但也需要有一个适配的基准版本,太古老的版本确实没有办法支持,你这边可以先在本地做一下适配,除了上面提到的两点兼容性外是否还有其它兼容点
拉取 fix#448 分支本地打包来测试一下是否做好兼容,这个分支兼容dom4j 1.6.x 及以上的版本
v0.5.25已兼容dom4j 1.6.x