Dom4J解析XML文档


<?xml version="1.0" encoding="UTF-8"?>
<students>
<student>
<name sn="01">张三</name>
<age>18</age>
</student>
<student>
<name sn="02">李四</name>
<age>20</age>
</student>
</students>


import java.io.File;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.ElementHandler;
import org.dom4j.ElementPath;
import org.dom4j.io.SAXReader;
/**
* 在不读完XML文档的时候解析里面的数据
* ElemnetHandler
* ElementPath
* @author Administrator
*
*/

public class ElementHandlerTest {
public static void main(String[] args){
//创建一个SAXReader对象来读取XML文档
SAXReader sax = new SAXReader();
//ADD一个Handler,用于监听,当读到对应元素时,采取相应的onStart,onEnd里面编写的方法
//还要指定路径,有相对的,也有绝对的,下面就是绝对的
//StudentHandler()和NameHandler()都是绝内部类,都implement ElementHandler
sax.addHandler("/students/student", new ElementHandlerTest.StudentHandler());
try {
//读取一个XML文档,返回一个Document对象
//读的时候就监听
sax.read(new File("students.xml"));

} catch (DocumentException e) {
e.printStackTrace();
}
}
private static class StudentHandler implements ElementHandler{
public void onStart(ElementPath elementPath) {
//getCurrent()获得当前元素
Element e = elementPath.getCurrent();
//attributeValue("sn"))获得当前元素的sn属性
System.out.println(e.attributeValue("sn"));
//ElementPath里面也可以添加addHandler,这里面用的是相对路径
elementPath.addHandler("name", new ElementHandlerTest.NameHandler());
}

public void onEnd(ElementPath elementPath) {
elementPath.removeHandler("name");
}
}

private static class NameHandler implements ElementHandler{
public void onStart(ElementPath elementPath) {
//获得当前路径
System.out.println(elementPath.getPath());
}
public void onEnd(ElementPath elementPath) {

Element e = elementPath.getCurrent();
//获得元素的值和名字
System.out.println(e.getName()+":"+e.getText());
}

}
}


一篇更加详细的
http://noknower.iteye.com/blog/269736
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值