JAXP和JAXB有什么区别?

Jot*_*thi 77 java xml

JAXP和JAXB有什么区别?

ska*_*man 67

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

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


gmh*_*mhk 48

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

JAXB是用于XML绑定的Java体系结构,它可以更容易地从用Java编程语言编写的应用程序访问XML文档.

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

  1. 创建一个SAX Parser或DOM Parser然后解析数据,如果我们使用DOM,如果文档太大,它可能是内存密集型的.假设我们使用SAX解析器,我们需要识别文档的开头.当它遇到一些重要的东西(用SAX术语,"事件"),例如XML标记的开头或标记内的文本时,它会使调用的应用程序可以使用这些数据.
  2. 然后创建一个内容处理程序,用于定义解析器遇到事件时要通知的方法.这些方法称为回调方法,对它们接收的数据采取适当的操作.

如果由JAXB执行相同操作,则需要执行以下步骤来访问Computer.xml

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

  • @Malwaregeek:这取决于具体情况,如果您按顺序访问整个XML,则SAX更可取,因为它占用较少的内存.如果您希望随机访问XML中的中间元素,DOM更可取但它需要更多内存.这种平衡类似于每个程序中的内存和时间空间平衡 (5认同)