java通过dom4j处理xml文档

最近在用dom4j处理xml的数据接口,将java利用dom4j处理xml的过程记录下来。

Game Stars

依赖jar包

  1) dom4j-1.6.jar http://www.java2s.com/Code/JarDownload/dom4j/dom4j-1.6.jar.zip

主要的类

  1) SAXReader , 处理XML的核心类

  2) Document , 代表XML整个文档

  3) Element , 结点

Always Be Coding

自己写了个xml文档

 1 <school>
 2     <student>
 3         <name>老子</name>
 4         <no>20140804</no>
 5         <majors>
 6             <major>体育</major>
 7             <major>美术</major>
 8             <major>舞蹈</major>
 9         </majors>
10     </student>
11    <student>
12         <name>孙子</name>
13         <no>20140805</no>
14         <majors>
15             <major>数学</major>
16             <major>物理</major>
17             <major>英语</major>
18         </majors>
19     </student>
20 </school>

下面是java读取文件的代码

 1 package tools;
 2 
 3 import java.util.Iterator;
 4 import org.dom4j.Document;
 5 import org.dom4j.DocumentException;
 6 import org.dom4j.Element;
 7 import org.dom4j.io.SAXReader;
 8 
 9 public class XMLHandler {
10     
11     public static void main(String[] args) {
12         String path = "resource/hello.xml";//可以是本地路径,也可以是网络路径
13         SAXReader reader = new SAXReader(); 
14         Document doc = null;
15         try {
16             doc = reader.read(path); //获取整个文档
17         } catch (DocumentException e) {
18             e.printStackTrace();
19             return;
20         }
21         Element root = doc.getRootElement();//获取到文档的根节点即<school></school>
22         Iterator<Element> stus = root.elementIterator("student");//获取<sutdent></student>迭代
23         //Iterator<Element> stus = root.elementIterator();  因为school下只有student,这种方法也行
24         Element student;
25         while(stus.hasNext()) {
26             student = stus.next();
27             System.out.println("姓名:"+student.elementTextTrim("name"));//获取name子结点的值
28             System.out.println("学号:"+student.elementTextTrim("no"));//获取no子结点的值
29             
30             Element majors = student.element("majors");
31             Iterator<Element> major_it = majors.elementIterator("major");
32             String major_str = "";
33             Element major;
34             while(major_it.hasNext()) {
35                 major = major_it.next();
36                 major_str += major.getTextTrim() + " ";//获取自身结点的值
37             }
38             System.out.println("专业:"+major_str);
39         }
40         
41     }
42 }


显示结果

1 姓名:老子
2 学号:20140804
3 专业:体育 美术 舞蹈 
4 姓名:孙子
5 学号:20140805
6 专业:数学 物理 英语 

 TO BE CONTINUED……

posted on 2014-08-04 23:17  Erbin  阅读(225)  评论(0编辑  收藏  举报

导航