JDOM的目的是成为Java特定文档模型,它简化与XML的交互并且比使用DOM实现更快。由于是第一个Java特定模型,JDOM一直得到大力推广和促进。正在考虑通过“Java规范请求JSR-102”将它最终用作“Java标准扩展”。从2000年初就已经开始了JDOM开发。
JDOM与DOM主要有两方面不同。首先,JDOM仅使用具体类而不使用接口。这在某些方面简化了API,但是也限制了灵活性。第二,API大量使用了Collections类,简化了那些已经熟悉这些类的Java开发者的使用。
JDOM文档声明其目的是“使用20%(或更少)的精力解决80%(或更多)Java/XML问题”(根据学习曲线假定为20%)。JDOM对于大多数
Java/XML应用程序来说当然是有用的,并且大多数开发者发现API比DOM容易理解得多。JDOM还包括对程序行为的相当广泛检查以防止用户做任何在XML中无意义的事。然而,它仍需要您充分理解XML以便做一些超出基本的工作(或者甚至理解某些情况下的错误)。这也许是比学习DOM或JDOM接口都更有意义的工作。
JDOM自身不包含解析器。它通常使用SAX2解析器来解析和验证输入XML文档(尽管它还可以将以前构造的DOM表示作为输入)。它包含一些转换器以将JDOM表示输出成SAX2事件流、DOM模型或XML文本文档。JDOM是在Apache许可证变体下发布的开放源码。
为减少DOM、SAX的编码量,出现了JDOM;
优点:20-80原则,极大减少了代码量。使用场合:要实现的功能简单,如解析、创建等,但在底层,JDOM还是使用SAX(最常用)、DOM、Xanan文档。
运行结果
生成的jdomDemo.xml文件如下:
- <?xml version="1.0" encoding="UTF-8"?>
- <books>
- <book id="1">
- <name>书本0</name>
- <price>50</price>
- <author>作者0</author>
- <seller>
- <sellerName>张三</sellerName>
- <sellerName>李四</sellerName>
- </seller>
- </book>
- <book id="2">
- <name>书本1</name>
- <price>100</price>
- <author>作者1</author>
- <seller>
- <sellerName>张三</sellerName>
- <sellerName>李四</sellerName>
- </seller>
- </book>
- <book id="3">
- <name>书本2</name>
- <price>150</price>
- <author>作者2</author>
- <seller>
- <sellerName>张三</sellerName>
- <sellerName>李四</sellerName>
- </seller>
- </book>
- </books>
解析生成的xml文档如下:
- 根节点:books
- 解析节点:book
- 属性-->id:1
- 解析节点:name--->书本0
- 解析节点:price--->50
- 解析节点:author--->作者0
- 解析节点:seller
- 解析节点:sellerName--->张三
- 解析节点:sellerName--->李四
- 解析节点:book
- 属性-->id:2
- 解析节点:name--->书本1
- 解析节点:price--->100
- 解析节点:author--->作者1
- 解析节点:seller
- 解析节点:sellerName--->张三
- 解析节点:sellerName--->李四
- 解析节点:book
- 属性-->id:3
- 解析节点:name--->书本2
- 解析节点:price--->150
- 解析节点:author--->作者2
- 解析节点:seller
- 解析节点:sellerName--->张三
- 解析节点:sellerName--->李四
不过JDOM需要引入jar包:jdom.jar