工作中会遇到各种xml的读和写,在此总结一下各自的使用场景。

 

1,dom4j,最常用的xml读写工具。功能强大,jdom的升级版,复杂的xml读写的首选,但是一次加载,占内存。最喜欢的就是它的Xpath功能。

2,jdom,dom,解析xml时,一次性加载进内存,大文件容易OOM,缺点即优点,却方便修改,适用于文件不大,需要反复修改的xml文件,jdom2.0内部可选sax方式解析,也挺好用。

3,stax,sax 都不用一次性加载进内存,流式处理,边解析边处理

stax当xml 文档非常大,不可能将xml所有数据加载到内存 ,一边解析 ,一边处理,一边释放内存资源 ---- 不允许在内存中保留大规模xml 数据

stax JDK6.0引入的新特性,stax是一种 拉模式 XML 解析方式,stax是一种 推模式 XML 解析方式, stax技术较sax新,较常用,

4,jaxb 将xml对象与xml对象相互映射,是不是很6,但是缺陷是DOM结构必须是静态的,不能是动态的,因为要提前写好映射的pojo类,在一次需求中就吃亏了,都快完成了,最后不能支持动态的xml,乖乖的换回DOM4j解析。

适用于dom结构固定简单的xml文件,不然pojo类映射会很复杂。

总结:首选DOM4j,功能最强大。但是会有杀鸡不用牛刀的情景

(1)DOM结构简单固定的可以用jaxb

(2)jdom2.0内部可以选用sax方式处理,用于解析文件不太大,需要反复修改的xml文件

(3)stax流式处理,处理逻辑不复杂时,首选。对内存资源要求较高时也可以用这个

 

个人最常使用:jaxb + dom4j + stax.

 

 

 

参考:

https://blog.csdn.net/bigtree_3721/article/details/50646856

https://blog.csdn.net/zhongkelee/article/details/51737710

https://blog.csdn.net/zzy7075/article/details/51468873

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐