dom4j读写xml文件

前言:


   首次接触dom4j的时候,感觉很神秘,而且对xml文件也有点小畏惧,感觉不好操作,当学习到dom4j可以读取xml文件时,有种学习的冲动,一起来看看吧。

前提:


   引入相关的jar文件
   .dom4j-1.6.1.jar
   . jaxen-1.1-beta-6.jar

读取并解析xml文档:

SAXReader reader = new SAXReader(); 
Document document = reader.read(new File(fileName));

    reader的read方法是重载的,可以从InputStream, File, Url等多种不同的源来读取。得到的Document对象就带表了整个XML。

    读取的字符编码是按照XML文件头定义的编码来转换。如果遇到乱码问题,注意要把各处的编码名称保持一致即可。


取得Root节点:

Element root=document.getRootElement(); 

root元素是xml文档的根节点。一切XML分析都是从Root元素开始的。

遍历XML树

  // 枚举所有子节点 
  for ( Iterator i = root.elementIterator(); i.hasNext(); ) { 
   Element element = (Element) i.next(); 
   // do something 
  } 
  // 枚举名称为foot的节点 
  for ( Iterator i = root.elementIterator(foot); i.hasNext();) { 
   Element foot = (Element) i.next(); 
   // do something 
  } 
  // 枚举属性 
  for ( Iterator i = root.attributeIterator(); i.hasNext(); ) { 
   Attribute attribute = (Attribute) i.next(); 
   // do something 
  } 

List<Element> elementList=root.elements(); 获得根元素下的所有子节点。
String elementName=element.getName(); 获得element节点的名字
String elementValue=element.getText(); 获得element节点的文本节点值
Attribute attribute=element.attribute(); 获得element节点的属性 
String attrValue=element.attributeValue("attrValue"); 获得属性值

 

Demo:

xml文件:

<?xml version="1.0" encoding="UTF-8"?> 
<students><!--顶层节点--> 
<student> 
<学生姓名>小熊</学生姓名> 
<性别>男</性别> 
<年龄>11</年龄> 
</student> 
<student> 
<学生姓名>小鹿</学生姓名> 
<性别>女</性别> 
<年龄>10</年龄> 
</student> 
</students> 

读取代码:

package com.test.test; 
import java.io.File; 
import java.net.MalformedURLException; 
import java.util.Iterator; 
import java.util.List; 
import org.dom4j.Document; 
import org.dom4j.DocumentException; 
import org.dom4j.Element; 
import org.dom4j.io.SAXReader; 

public class XmlConfigReader { 
/** 
* 读取xml_file.xml的配置 
* @param args 
*/ 
//读取xml文件到Document 
public Document read(String fileName) throws MalformedURLException, DocumentException { 
SAXReader reader = new SAXReader(); 
Document document = reader.read(new File(fileName)); 
return document; 
} 

//获取xml的根节点(xml是从根节点开始的) 
public Element getRootElement(Document doc){ 
return doc.getRootElement(); 
} 

//遍历读取xml的数据 
public void Traversing(Element root) { 
for ( Iterator i = root.elementIterator("student"); i.hasNext(); ) {//这里不是从根节点开始的,而是根节点下的第一个节点 
Element element = (Element) i.next(); 
// do something 
System.out.println(element.elementText("学生姓名")); 
System.out.println(element.elementText("性别")); 
System.out.println(element.elementText("年龄")); 
} 
} 
public static void main(String[] args) { 
String path = "E:\\xml_file.xml"; 
try { 
XmlConfigReader xcr = new XmlConfigReader(); 
Document doc = xcr.read(path);//根据路径path读入xml文件 
Element root = xcr.getRootElement(doc);//获得根节点; 
xcr.Traversing(root);//遍历读取xml的数据 
} catch (MalformedURLException e) { 
// TODO Auto-generated catch block 
e.printStackTrace(); 
} catch (DocumentException e) { 
// TODO Auto-generated catch block 
e.printStackTrace(); 
} 
} 
}

输出结果:


小熊

11
小鹿

10

总结:


   其实还是蛮简单的,困难往往被我们放大,多多实践总结,一切都会so easy!


评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值