在哪里可以找到Java XML框架的详细比较?

yeg*_*256 26 java xml architecture jaxb xml-parsing

我正在尝试为我的Java项目选择XML处理框架,我迷失了名字...... XOM,JDOM等.在哪里可以找到所有流行的Java XML框架的详细比较?

Ara*_*ram 63

正如布莱斯指出坚持标准.但是,在此期间创建了多个标准来解决不同的问题/用例.选择哪一个完全取决于您的要求.我希望下面的比较可以帮助您选择正确的.

现在有两件事你必须选择.APIAPI实现(有很多)

API

SAX:优点

  • 基于事件
  • 记忆效率高
  • 比DOM快
  • 支持模式验证

萨克斯:缺点

  • 没有对象模型,你必须利用事件并创建自己
  • 单个解析xml并且只能前进
  • 只读api
  • 没有xpath支持
  • 有点难用

DOM:优点

  • 内存中的对象模型
  • 保留元素顺序
  • 双向
  • 读写api
  • xml操作
  • 简单易用
  • 支持模式验证

DOM:缺点

  • 大型XML文档的内存耗费(通常用于小于10 MB的XML文档)
  • 慢点
  • 通用模型即你使用节点

Stax:优点

  • 最好的SAX和DOM即DOM的易用性和SAX的效率
  • 记忆效率高
  • 拉模型
  • 读写api
  • 支持subparsing
  • 可以在一个单独的线程中同时读取多个文档
  • 并行处理XML更容易

Stax:缺点

  • 没有架构验证支持(据我记得,不确定他们现在是否添加了它)
  • 只能像萨克斯一样前进
  • 没有xml操作

JAXB:优点

  • 允许您访问和处理XML数据,而无需了解XML
  • 双向
  • 比DOM更有效的内存
  • SAX和DOM是通用解析器,其中JAXB创建特定于XML Schmea的解析器
  • 数据转换:JAXB可以将xml转换为java类型
  • 通过对象API支持XML MANIPULATION

JAXB:缺点

  • 只能解析有效的XML

Trax:使用XSLT将XML从1种形式转换为另一种形式

实现

SAX,DOM,Stax,JAXB只是规格.这些规范有许多开源和商业实现.大多数情况下,您可以坚持使用JDK或您的应用程序服务器.但有时您需要使用默认提供的不同实现.这是您可以欣赏JAXP包装器API的地方.JAXP允许您通过配置切换实现,而无需修改代码.它还提供了解析器/规范独立的api,用于解析,转换,验证和查询XML文档.

各种实现的性能和其他比较


现在标准很好,但偶尔遇到这个疯狂的用例,你必须支持解析大小为100千兆字节的XML文档,或者你需要超快速的XML处理(可能是你正在实现一个XML解析器芯片)当你需要抛弃标准并寻找不同的做事方式时.它是关于使用正确的工具正确的工作!这是我建议你看看vtd-xml的地方

在SAX和DOM的最初几天,人们想要比其中任何一个提供的API更简单.我知道JDOM,dom4j,XmlBeans,JiBX,Castor变得流行.

  • 那些有关心的绅士可以解释原因吗. (3认同)