当年我刚开始使用Java的时候,有时候会考虑使用xml来存储数据,那个时候一般使用JAXP中的DOM或者SAX parser 包来CRUD xml文件。后来Web Service大行其道,WSDL, XSD这种很好格式化的文档,非常适合可以自动生成代码,于是出现了JAXB,通过annotation方便实现xml和Java class之间的转换。
JAXP (Java API for XML Processing) 中DOM( Document Object Model)把整个xml当成对象处理,非常方便随机读写,不过如果xml文件很大的话那就可能内存占用成问题,SAX(Simple
API for XML)把xml中所有的节点当成事件处理(org.xml.sax.helpers.DefaultHandler),那么顺序读取xml文件的时候比DOM就好很多,更快占用内存少。
JAXP中还有非常有用的2个成员,XSTL(Extensible Stylesheet Language Transformations)在Java中实现XML与其他格式的转换和Stax(Streaming API for XML)类似SAX,不同是按流方式处理XML文件,同时主动拉取数据而不是被动等待event到来。
JAXP的API可以说是对XML的直接处理低层次API,对于WebService以及ORM服务来说,直接使用还是太过复杂,为了进一步的简化程序员的工作,JAXB (Java Architecture for XML Binding) 出现了,作为特殊的API (属于 javax.xml.bind的一部分
)
,利用XML文档的XML
Schema Definition(XSD),在Java中使用 annotations实现XML 文档和 java 对象模型转映射。
接下来的系列中,主要是写写自己如何通过JAXB实现XML与Java对象的转换。