有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

JavaJDK1.6和Xerces?

在我当前的项目中,我们的目标是JDK1.6运行时环境。对于遗留rasons,Xerces JAR文件捆绑在应用程序中

这些已经不需要了,对吗?JDK(有一段时间)在JDK中捆绑了XML解析库


共 (4) 个答案

  1. # 1 楼答案

    认可的标准覆盖机制运行良好。贾瓦。赞同。dirs=path_to_folder_包含_new_library_jars将解决JDK 1.6的问题

    我已经在百里香叶的背景下验证了上述解决方案。在某些情况下,如果您选择LEGACYHTML5模式,并且如果您使用NekoHtml解析器自动更正未关闭的html标记, Neko依赖Xerces罐子。设置类路径并不能解决问题

    谢谢s-n-ushakov

  2. # 2 楼答案

    这些XML服务使用所谓的“服务提供者”机制插入应用程序环境

    其工作原理如下:

    1. 它试图找到正好指向应该使用的工厂类的系统属性。例如-Djavax.xml.parsers.SAXParserFactory=<some class>
    2. 如果未找到系统属性FactoryFinder在特殊属性文件中查找属性。例如${java.home}/lib/jaxp.properties
    3. 如果未找到文件属性,FactoryFinder将在类路径META-INF/services/<some service>中查找服务描述,例如META-INF/services/javax.xml.parsers.SAXParserFactory。 它是一个应该包含工厂类名的文件,例如org.apache.xerces.jaxp.SAXParserFactoryImpl
    4. 如果类路径中没有这样的文件,java将使用默认的工厂实现

    所以,如果您没有指向工厂类的系统属性,java将悄悄地选择合适的实现

  3. # 3 楼答案

    自从1.4版本将JAXP添加到JRE之后,就没有必要绑定XML解析器了。您应该使用JAXP,而不是直接调用Xerces。在内部,JRE绑定并使用Xerces(前缀为“com.sun”)

  4. # 4 楼答案

    JDK中的解析器是Xerces的分支,但它有很多缺陷。我建议生产应用程序优先使用Apache版本的解析器。这些漏洞很少见,但它们是不可预测的,它们不仅影响现实生活中看不到的角落案例;我见过很多情况,解析非常无聊的XML文档,并将损坏的数据传递给应用程序以获取属性值。Sun/Oracle对解决该问题没有兴趣。每次都使用Apache Xerces

    更新(2018)

    据我所知,Xerces的JDK版本的问题似乎已经在Java8中得到了解决,所以这个建议已经过时了