当前位置: 首页 > 面试题库 >

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

尹善
2023-03-14
问题内容

我试图为我的Java项目选择一个XML处理框架,但我的名字迷路了。XOM,JDOM等。在哪里可以找到所有流行的Java XML框架的详细比较?


问题答案:

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

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

API

SAX:优点

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

SAX:缺点

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

DOM:优点

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

DOM:缺点

  • 较大的XML文档的存储空间(通常用于小于10 mb的XML文档)
  • 慢点
  • 通用模型,即您使用节点

Stax:优点

  • 最好的SAX和DOM,即DOM的简化和SAX的效率
  • 记忆有效
  • 拉模型
  • 读写API
  • 支持细分
  • 可以在一个线程中同时读取多个文档
  • XML的并行处理更容易

Stax:缺点

  • 不支持模式验证(据我所记得,不确定他们是否已添加)
  • 只能像萨克斯一样前进
  • 没有xml操作

JAXB:优点

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

JAXB:缺点

  • 只能解析有效的XML

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

实作

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

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

  • Stax:http: //java.sun.com/performance/reference/whitepapers/StAX-1_0.pdf
  • 大部分API:http: //www.ibm.com/developerworks/xml/library/x-databdopt2/
  • SO上的JAXB与XmlBeans讨论:JAXB与Apache XMLBeans
  • http://www.ibm.com/developerworks/xml/library/x-injava/

现在的标准是好的,但是有时您会遇到这种疯狂的用例,在这种情况下,您必须支持解析大小为 100 GB 的XML文档,或者您需要 超快速
的XML处理(可能是您正在实现XML解析器芯片),并且是当您需要放弃标准并寻找不同的处理方式时。关于使用正确的工具完成正确的工作!这是我建议您查看
vtd-xml的地方

在SAX和DOM最初的日子里,人们希望使用比任何一个都提供的API更简单的API。我知道JDOM,dom4j,XmlBeans,JiBX,Castor是流行的。



 类似资料:
  • 对于Windows Vista和Windows 7,请运行: keytool-list-v-keystore“C:\users\your_user_name.androiddebugkey-storepass android-keypass android” 但是我不明白我应该在Windows中的哪里运行这个试验?

  • 问题内容: 几年前,我在维护的Linux服务器上安装了Apache 2.2x和PHP 5.3.1。我使用.tar.gz并按照指示进行构建(而不是rpm和您拥有什么)。一切都很好。 今天,我需要安装它,它看起来像一个PHP库。我完成了所有步骤以进行安装,并在其中找到ibm_db2.so。 最好的收获是最后一步是配置php.ini,但是我的系统上没有php.ini。恐怖的恐怖。PHP可以正常工作,当然

  • 问题内容: hibernatejar中的DTD是了解可以包含哪些属性以及该标记的预期名称的好方法。 打开DTD文件是获得所有元素和属性的概述,查看默认值以及一些注释的最简单方法。 这将帮助程序员从scracth编写hibernate.cfg.xml文件(疯狂,但有些人确实要求在不使用internet的情况下实现:O) 当我们有一个hibernatejar时,请告诉DDT的位置。 这不是编程问题,但

  • 问题内容: 我正在按照此站点上的MVC单元测试说明进行操作,但找不到用于注释的jar 。有人知道罐子在哪里吗? 问题答案: 通过Maven: 或从项目主页:http://code.google.com/p/atinject/ 另外,此MvnRepository.com页面提供了其他构建工具(如Ivy,Gradle等)的必要配置。

  • 问题内容: 看来php命令行使用的是与主要php解释器不同的php.ini。我正在使用Ubuntu 10.4。我的问题是,在主php.ini中,我为外部库包含了一个额外的路径,但是在cli版本中,此路径不存在,因此出现了路径包含错误。 谢谢 问题答案: 只是问问PHP:

  • 我遵循了所有步骤。我选择了我想要的API(YouTube数据API)并创建了一个项目。我现在搜索了大约 20 分钟,但找不到 API 密钥?我的用户界面是德语的,有没有可能以API密钥以外的其他东西命名?也许是 Clientschlüssel (Client Key) ? 这是我找到的全部: 还有一个JSON对象,但没有API Key: