一、介绍
DOM是两位著名的 Java 开发人员兼作者,Brett Mclaughlin 和 Jason Hunter 的创作成果, 2000 年初在类似于Apache协议的许可下,JDOM作为一个开放源代码项目正式开始研发了。它已成长为包含来自广泛的 Java 开发人员的投稿、集中反馈及错误修复的系统,并致力于建立一个完整的基于 Java 平台的解决方案,通过 Java 代码来访问、操作并输出 XML 数据。
二、JDOM简介
JDOM是由以下几个包组成的
org.jdom包含了所有的xml文档要素的java类
org.jdom.adapters包含了与dom适配的java类
org.jdom.filter包含了xml文档的过滤器类
org.jdom.input包含了读取xml文档的类
org.jdom.output包含了写入xml文档的类
org.jdom.transform包含了将jdomxml文档接口转换为其他xml文档接口
org.jdom.xpath包含了对xml文档xpath操作的类
三、示例代码
需要引入JDOM的包,本例使用的是JDOM 2.0.6 可在官网下载。
需要解析的XML代码test.xml
<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
<book name="book1">
<bookname>活着</bookname>
<author>余华</author>
<price>39</price>
</book>
<book name="book2">
<bookname>资本论</bookname>
<author>卡尔马克思</author>
<price>88</price>
</book>
</bookstore>
Java运行代码JDomDemo.java
import java.util.*;
import org.jdom2.*;
import org.jdom2.input.SAXBuilder;
public class JDomDemo {
public static void main(String[] args) throws Exception{
SAXBuilder sb=new SAXBuilder(); //以包含XML数据的文件为参数,构建一个文档对象sb
Document doc=sb.build(JDomDemo.class.getClassLoader().getResourceAsStream("test.xml")); //构造文档对象
Element root=doc.getRootElement(); //获取根元素bookstore
List list=root.getChildren("book");//取名字为book的所有元素
for(int i=0;i<list.size();i++){
Element element=(Element)list.get(i);
String name = element.getAttributeValue("name");//获取name属性值
String bookname=element.getChildText("bookname");//取book子元素name的内容
String author=element.getChildText("author");//取book子元素author的内容
String price=element.getChildText("price");//取book子元素price的内容
System.out.println("书籍信息:");
System.out.println("书籍号:"+name);
System.out.println("书名:"+bookname);
System.out.println("作者:"+author);
System.out.println("价格:"+price);
System.out.println("-----------------------------------");
}
}
}
运行结果: