关于JAXP, JAXB, SAX, StAX, DOM等名词解释

关于JAXP, JAXB, SAX, StAX, DOM等名词解释

DOM(Document Object Model):SAX和DOM最先出来的两种解析器。是一种tree-based API。DOM的特点是,把整个XML内容读取内存中进行处理。

    优点:可以随机进行对某个节点内容进行读取和写入。缺点:耗费内存,性能差。

    如果要对XML内容进行很多随机的读取其中的内容,或进行更改,还是建议使用DOM解析器。

SAX(Simple API for XML):和DOM不同,SAX不是一次把所有XML内容读取进来,而是进行一行一行的读取。每读取一行,就处发事件,处理这行的内容。

    优点:处理速度快,节省内存。缺点:不能再次读取已经读过的内容,而且只能进行读,不能进行写。

    适用于只扫描一次XML内容,就能提取想要的数据的场合。

StAX(Streaming API for XML):StAX解析器是最后出来的解析器,被认为比前两种都好。

    它和SAX非常像,也是event-based API,不同的一点是:

        StAX是Pull类型,而SAX是Push类型,这两种类型有什么不同,稍后的文章介绍。

      (StAX有两种API,一种是cursor-based,一种是iterator-based)

    StAX相对SAX来说,更易于使用,编程上更方便一点。

    SAX只能对XML内容进行读,不能写;而StAX既可进行读,也可以进行写。

    优点:处理速度快,节省内存,可进行读写。缺点:不能再次读取已经读过的内容。

    适用于只扫描一次XML内容,就能提取想要的数据的场合。

JAXB: JAXB是Java Architecture for XML Binding的缩写。可以将一个Java对象转变成为XML格式,反之亦然。

    我们把对象与关系数据库之间的映射称为ORM,其实也可以把对象与XML之间的映射称为OXM(Object XML Mapping)。

    原来JAXB是Java EE的一部分,在JDK1.6中,SUN将其放到了Java SE中,这也是SUN的一贯做法。

    JDK1.6中自带的这个JAXB版本是2.0,比起1.0(JSR 31)来,JAXB2(JSR 222)用JDK5的新特性Annotation来标识要作绑定的类和属性等,

    这就极大简化了开发的工作量。 

JAXP和JAXB的:

  1,JAXP只能把对象数据和其它数据从XML文件中解析出来,如果要把解析出来的数据组装成Java对象的话,需要手动组装。

        JAXB可以直接把XML内容转换成Java对象。

        用JAXB自动组装和StAX手动组装的例子:http://www.cnblogs.com/qiyebao/p/4573071.html

        用JAXB和StAX联合组装例子和一些测试的结果,非常好:https://dzone.com/articles/xml-unmarshalling-benchmark

         http://stackoverflow.com/questions/25643097/can-a-part-of-xml-be-marshalled-using-jaxb-or-jaxb-stax

  2,JAXP是JAXB读取过程中的一部分,JAXB默认的XML解析器就是StAX。

参考:

http://m.blog.csdn.net/article/details?id=3972043

http://m.blog.csdn.net/article/details?id=17293591

http://www.cnblogs.com/f1194361820/p/4467935.html

JAXB:

http://blog.bdoughan.com/2012/08/removing-jaxbelement-from-your-domain.html?m=1

http://www.ibm.com/developerworks/cn/webservices/1003_sunzg_jaxb/index.html

http://www.oschina.net/question/12_25295?fromerr=NeKC6Bry

https://docs.oracle.com/javase/tutorial/jaxb/intro/

http://www.oracle.com/technetwork/articles/javase/index-140168.html

http://www.vogella.com/tutorials/JAXB/article.html

http://m.blog.chinaunix.net/uid-20749563-id-718396.html

JAXP:

http://docs.oracle.com/javase/tutorial/jaxp/

http://www.ibm.com/developerworks/cn/xml/x-jaxp/index.html

StAX:

http://zangweiren.iteye.com/blog/647334

http://www.saxproject.org/event.html

http://www.xml.com/pub/a/2003/09/17/stax.html?page=1

http://www.vogella.com/tutorials/JavaXML/article.html#javaxml

StAX and SAX and DOM:(good)

http://dublintech.blogspot.jp/2011/12/jaxb-sax-dom-performance.html?m=1(需要用代理打开,3种解析器的性能测试)

http://tutorials.jenkov.com/java-xml/sax-vs-stax.html(从XML到StAX到DOM说明)

http://docs.oracle.com/cd/E17802_01/webservices/webservices/docs/1.6/tutorial/doc/SJSXP2.html

http://m.blog.csdn.net/article/details?id=17293591

http://m.blog.csdn.net/article/details?id=3972043

http://www.cnblogs.com/f1194361820/p/4467935.html

猜你喜欢

转载自blog.csdn.net/m0_37542889/article/details/83178447