首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JDK 1.6和Xerces?

JDK 1.6和Xerces?
EN

Stack Overflow用户
提问于 2011-10-17 21:14:35
回答 4查看 22.6K关注 0票数 12

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

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

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-10-17 21:21:51

JAXP被添加到JRE中时,捆绑XML解析器从1.4开始就不再是必要的。您应该使用JAXP,而不是直接调用Xerces。在内部,JRE无论如何都捆绑和使用Xerces (带有"com.sun“前缀)。

票数 15
EN

Stack Overflow用户

发布于 2011-10-17 21:35:49

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

它的工作原理如下:

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

因此,如果您没有指向明显的工厂类的系统属性,java将会悄悄地选择合适的实现。

票数 22
EN

Stack Overflow用户

发布于 2011-10-18 00:27:29

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

更新(2018)

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

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7794281

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档