这几天学习了xml,最后做一下总结:
XML的三种解析方式:1、DOM解析;2、SAX解析;3、DOM4J解析。
推荐使用dom4j方式来解析xml。
一、DOM解析
DOM解析会将文档全部加载到内存当中,在内存中生成一个树文档对象,因为每一个xml文档都有一个根元素,加载到内存中后,该根元素就是树文档的根,从而可以获取该根元素,进行解析文档。
优点:
- 因为整个文档都已经在内存当中,所以操作起来灵活方便
- 可以随机解析
- 可以修改文件
- 可以创建xml文件
缺点:
- 同样因为在内存当中,所以不适合解析大文件,会过于消耗内存资源
- 适合解析小文件,对内存要求高
下面是一个dom解析示例:https://blog.csdn.net/Attention_0/article/details/100609187
二、SAX解析
它是基于事件的解析,遇到开始标签、结束标签、文本内容,会触发事件来使用继承了DefaultHandler类,实现了其方法,来进行解析文档,它逐行扫描文档,一边扫描一边解析,因此也就一步一步将文档加载到内存,解析完的部分就不再内存中了。
而且相比于DOM,SAX可以在解析文档的任意时刻停止解析,但任何事物都有其相反的一面,对于SAX来说就是操作复杂。
优点:
- 适合解析大文件,对内存要求不高
- 轻量级的解析数据方式,效率更高
缺点:
- 不能随机解析(只能从头开始解析,一点点往后进行)
- 不能修改XML文件,只能进行查询
- 代码量大,复杂
- 空文本、换行也会触发事件解析
下面是一个sax解析示例:https://blog.csdn.net/Attention_0/article/details/100607067
三、DOM4J解析
dom4j 是一个Java的XML API,是jdom的升级品,用来读写XML文件的。与JDOM不同的是,dom4j使用接口和抽象基类,虽然Dom4j的API相对要复杂一些,但它提供了比JDOM更好的灵活性。dom4j是一个十分优秀的JavaXML API,具有性能优异、功能强大和极其易使用的特点,它的性能超过sun公司官方的dom技术。
dom4j最主要的就是获取到根元素,使用迭代器遍历解析出xml文档。
优点:
dom4j解析XML的基础问题,包括建立XML文档,添加、修改、删除节点,以及格式化(美化)输出和中文问题。
下面是一个dom4j解析xml的示例:https://blog.csdn.net/Attention_0/article/details/100610156
下面是一个dom4j生成xml的示例:https://blog.csdn.net/Attention_0/article/details/100610387