JAXP和JAXB有什么区别?

时间:2010-05-10 09:14:43

标签: java xml

JAXP和JAXB有什么区别?

3 个答案:

答案 0 :(得分:67)

JAXP(用于XML处理的Java API)是一个相当过时的术语,涵盖了JavaSE中的各种低级XML API,例如DOM,SAX和StAX。

JAXB(用于XML绑定的Java体系结构)是一个特定的API(javax.xml.bind下的东西),它使用注释将XML文档绑定到java对象模型。

答案 1 :(得分:47)

JAXP是用于XML处理的Java API,它为我们提供了使用DOM或SAX解析器解析XML文件的平台。

当JAXB是用于XML绑定的Java体系结构时,它将使从Java编程语言编写的应用程序访问XML文档变得更加容易。

例如:Computer.xml文件,如果我们想用JAXP访问数据,我们将执行以下步骤

  1. 创建一个SAX Parser或DOM Parser,然后在我们使用时解析数据 DOM,如果文档太大,可能会占用大量内存。假设 如果我们使用SAX解析器,我们需要识别它的开头 文献。当它遇到重要的事情时(用SAX术语来说,一个 “事件”),例如XML标记的开头,或者文本内部的文本 tag,它使调用的应用程序可以使用该数据。
  2. 然后创建一个定义方法的内容处理程序 解析器遇到事件时通知。这些方法, 称为回调方法,对数据采取适当的操作 他们收到了。
  3. 如果由JAXB执行相同操作,则需要执行以下步骤才能访问Computer.xml

    1. 绑定XML文档的架构。
    2. 将文档解组为Java内容对象。 Java内容对象表示XML文档的内容和组织,可直接用于您的程序。 解组后,只需访问Java内容对象中的数据然后显示数据,程序就可以访问和显示XML文档中的数据。无需创建和使用解析器,也无需使用回调方法编写内容处理程序。这意味着开发人员可以访问和处理XML数据,而无需了解XML或XML处理

答案 2 :(得分:2)

关键区别在于xml Schema扮演的角色。 JAXP过时而不了解XML Schema,而JAXB作为第一步处理模式绑定。