java 使用DOM4J解析XML文档
DOM4J
dom4j是一个Java的XML API,是jdom的升级品,用来读写XML文件的。dom4j是一个十分优秀的
JavaXML API,具有性能优异、功能强大和极其易使用的特点,它的性能超过sun公司官方的dom技术,
同时它也是一个开放源代码的软件,可以在SourceForge上找到它。
使用步骤
-
下载DOM4J的jar包,并导入到工程中
-
创建 SAXReader对象
SAXReader reader = new SAXReader();
-
通过read方法加载xml
Document document = reader.read(new File("book.xml"));
-
获取根节点
Element bookstore = document.getRootElement();
-
通过elementIterator方法获取迭代器
Iterator it = bookstore.elementIterator();
-
遍历迭代器,获取根节点下节点
while(it.hasNext()) Element book = (Element) it.next();
-
获取节点属性
List<Attribute> attrs = book.attributes(); for(Attribute attr : attrs) { System.out.println("属性"+attr.getName()+":"+attr.getValue()); }
-
获取节点的子节点。
过程为重复5.6.7。
示例
下面是一个简单的小例子,说明一下使用过程及步骤。
book.xml
<?xml version="1.0" encoding="UTF-8" ?>
<bookstore>
<book id="1">
<name>111</name>
<author>222</author>
</book>
<book id="2">
<name>333</name>
<author>444</author>
</book>
</bookstore>
DOM4J.java
package com.lpp.test;
import java.io.File;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class DOM4J
{
public static void main(String[] args)
{
// TODO Auto-generated method stub
//创建 SAXReader对象
SAXReader reader = new SAXReader();
try
{
//通过read方法加载xml
Document document = reader.read(new File("book.xml"));
//获取根节点
Element bookstore = document.getRootElement();
//通过elementIterator方法获取迭代器
Iterator it = bookstore.elementIterator();
//遍历迭代器,获取根节点下节点
while(it.hasNext())
{
System.out.println("开始遍历");
Element book = (Element) it.next();
List<Attribute> attrs = book.attributes();
for(Attribute attr : attrs)
{
System.out.println("属性"+attr.getName()+":"+attr.getValue());
}
Iterator it2 = book.elementIterator();
while (it2.hasNext())
{
Element bookChild = (Element) it2.next();
System.out.println("节点"+bookChild.getName() + ":" + bookChild.getStringValue());
}
System.out.println("结束遍历");
}
} catch (DocumentException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}