最近在用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 专业:数学 物理 英语