Java中有哪些解析XML的类库?有什么特点?

1. DOM(Document Object Model)

符合官方 W3C 标准

是以层次结构组织的节点

可以在层次结构中寻找特定信息

需要加载整个文档、构造层次结构

优点:可获取和操作 xml 任意部分的结构和数据

缺点:需加载整个 XML 文档,消耗资源大

2. SAX(Simple API for XML)

SAX 解析器基于事件的模型,解析 XML 文档时可以触发一系列事件,解析到期望的节点,可以激活一个回调方法,处理该节点上的数据

优点:

不需要全部加载完 XML 文档,可以在达到期望条件时停止解析

对内存的要求较低,能解析占用存储较大的文档

可以一边加载 XML,一边解析

解析 XML 效率和性能较高

缺点:

需要开发者负责节点的处理逻辑,文档越复杂程序就越复杂

按照 XML 内容单向解析,无法直接定位文档层次,很难同时访问同一个文档中的多处不同数据

3. JDOM(Java-based Document Object Model)

JDOM 自身不包含解析器,使用 SAX2 解析器来解析和验证输入XML文档

包含一些转换器以将 JDOM 表示输出成 SAX2 事件流、DOM 模型、XML 文本文档

优点:API 简单,方便开发

缺点:灵活性较差;性能较差

4. dom4j(Document Object Model for Java)

dom4j 包含了超出 XML 文档表示的功能

支持 XML Schema

支持大文档或流化文档的基于事件的处理

可以选择按照 DOM 或 SAX 方式解析 XML 文档

优点:

API丰富易用,较直观,方便开发

支持 XPath

性能较好

缺点:

接口较多,API 较为复杂

总结

dom4j 性能最佳

JDOM 和 DOM 性能不佳,大文档易内存溢出,但可移植。小文档可考虑使用 DOM 和 JDOM

XML 文档较大且不考虑移植性问题可用 dom4j

无需解析全部 XML 文档,可用 SAX

新手学ppt要多久(新手如何学做ppt课程)|3m净水器滤芯更换方法是怎样的?