dom4J 解析Xml文档以及对象

Dom4J

Dom4J是一个易用,开源的库,多用于解析XML,Xpath,Xslt,它用于Java平台,采用了Java集合框架,并完全支持DOM,SAX和Jaxp
Dom4J的下载地址 http://sourceforge.net/projects/dom4j/files/dom4j-2.0.0-ALPHA-2/

1 读取/解析Xml文档(依赖于org.dom4j.io)


//该方法返回的是整个XML文档对象
public Document read(String fileName) throws SomeException{
SAXReader saxReader = new SAXReader();
Document doc = saxReader.read(new file(fileName));
return doc;
}


方法说明
read方法为重载形式的方法
read(InputStream is);  //使用输入流作为参数
read(File file); //使用文件对象作为参数
read(Url url); //使用同一转定位符作为参数


2 获取root根节点
任何一个规范的XML文件都必须有一个"根" 做为基础节点,如下例

<?xml version="1.0" encoding="utf-8"?>
<!--该文档中每一个Employee节点都可表示为一个Employee对象,每个对象都有四个属性---->
<Employees>
<Employee>
<id>32001</id>
<employeeName>Hostman</employeeName>
<employeeAge>22</employeeAge>
<employeeEmail>Hostman@msn.com</employeeEmail>
</Employee>
<Employee>
<id>32002</id>
<employeeName>green</employeeName>
<employeeAge>23</employeeAge>
<employeeEmail>green123@msn.com</employeeEmail>
</Employee>
</Employees>



//该方法返回的是Employees节点对象
public Element getRootElement(Document document)throws SomeException{
return document.getRootElement();
}


3 迭代XML树对象
有三种方法
 //rootElement 为根节点对象
for (Iterator i = rootElement.elementIterator(); i.hasNext();) {
Element element = (Element) i.next();
for(int c=0;c<element.elements().size();c++){
Element node = (Element) element.elements().get(c);
System.out.println(node.getText());
}

for(Iterator i = rootElement.elementIterator();i.hasNext();){
Element e = (Element) i.next();
for(int c=0;c<e.elements().size();c++){
Element node = (Element) e.elements().get(c);
System.out.println(node.getText());

}

for(Iterator i = rootElement.elementIterator("data");i.hasNext();){
Element e = (Element) i.next();
for(int c=0;c<e.elements().size();c++){
Element node = (Element) e.elements().get(c);
System.out.println(node.getText());

}

//获取XML文档对象中的属性
List list = rootElement.elements();
for(int i=0;i<list.size();i++){
Element e = (Element) list.get(i);
List attrList = e.attributes();
for(int c=0;c<attrList.size();c++){
Attribute attr = (Attribute) attrList.get(c);
System.out.println(attr.getName() + " " + attr.getText());
}

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值