dom4j解析XML文件(2)—读取XML文件

Emp.xml:

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <list>
 3     <emp id="1">
 4         <name>张三</name>
 5         <age>34</age>
 6         <gender></gender>
 7         <salary>3000</salary>
 8     </emp>
 9     <emp id="2">
10         <name>李四</name>
11         <age>21</age>
12         <gender></gender>
13         <salary>4000</salary>
14     </emp>
15     <emp id="3">
16         <name>王五</name>
17         <age>46</age>
18         <gender></gender>
19         <salary>6500</salary>
20     </emp>
21     <emp id="4">
22         <name>赵六</name>
23         <age>28</age>
24         <gender></gender>
25         <salary>4400</salary>
26     </emp>        
27     <emp id="5">
28         <name>钱七</name>
29         <age>53</age>
30         <gender></gender>
31         <salary>12000</salary>
32     </emp>    
33 </list>

dom4j读取emp.xml文件的源码:

 1 package testReadXML;
 2 
 3 import java.io.File;
 4 import java.util.List;
 5 
 6 import org.dom4j.Attribute;
 7 import org.dom4j.Document;
 8 import org.dom4j.DocumentException;
 9 import org.dom4j.Element;
10 import org.dom4j.io.SAXReader;
11 import org.junit.Test;
12 
13 public class ReadXML {
14     /**
15      * 利用dom4j提供的SAXReader对象,将XML文件读取为Document对象
16      * @param fileName 文件的名字,如"Emp.xml"
17      * @return Document对象
18      */
19     public static Document readXML(String fileName){
20         Document doc = null;
21         try {
22             SAXReader reader = new SAXReader();
23             doc = reader.read(new File(fileName));//read()方法是默认从工程的根路径读取
24             return doc;
25         } catch (DocumentException e) {
26             e.printStackTrace();
27         }
28         return doc;
29     }
30     @Test
31     /**
32      * 获取XML文件的根元素,并打印输出根元素的名字
33      * 输出结果:list
34      */
35     public void rootElement(){
36         Document doc = ReadXML.readXML("Emp.xml");//read()方法是默认从工程的根路径读取
37         Element root = doc.getRootElement();
38         System.out.println(root.getName());//getName()获取Element的名字
39     }
40     @Test
41     /**
42      * 获取当前元素下指定名字的子元素,并输出该元素的属性名字和属性值
43      * 输出结果:id 1 id 1
44      */
45     public void element(){
46         Document doc = ReadXML.readXML("Emp.xml");//read()方法是默认从工程的根路径读取
47         Element root = doc.getRootElement();
48         Element e = root.element("emp");//element("元素的名字")获取指定元素名字的元素
49         Attribute attr1 = e.attribute(0);//获取该元素的属性,0表示第一个属性。
50         Attribute attr2 = e.attribute("id");//获取指定名字的属性,"id"表示属性的名字
51         System.out.print(attr1.getName()+" ");//获取属性的名字
52         System.out.print(attr1.getValue()+" ");//获取属性的值
53         System.out.print(attr2.getName()+" ");//获取属性的名字
54         System.out.print(attr2.getValue()+" ");//获取属性的值
55     }
56     @Test
57     /**
58      * 获取该元素下所有的元素,返回List集合,迭代输出所有的元素名字,属性名和属性值
59      * 输出结果:      元素名:emp 属性名:id  属性值:1
60                 元素名:emp 属性名:id  属性值:2
61                 元素名:emp 属性名:id  属性值:3
62                 元素名:emp 属性名:id  属性值:4
63                 元素名:emp 属性名:id  属性值:5
64      */
65     public void elements(){
66         Document doc = ReadXML.readXML("Emp.xml");//read()方法是默认从工程的根路径读取
67         Element root = doc.getRootElement();
68         List<Element> elements = root.elements();//获取该元素下所有的Element,返回list集合
69         for (Element element : elements) {
70             Attribute attr = element.attribute(0);
71             System.out.println("元素名:"+element.getName()+" 属性名:"+attr.getName()+"  属性值:"+attr.getValue());
72         }
73     }
74     @Test
75     /**
76      * 获取元素名为name的所有text值
77      * 输出结果:张三  李四  王五  赵六  钱七  
78      */
79     public void getTest(){
80         Document doc = ReadXML.readXML("Emp.xml");//read()方法是默认从工程的根路径读取
81         Element root = doc.getRootElement();
82         List<Element> elements = root.elements();//获取该元素下所有的Element,返回list集合
83         for (Element element : elements) {
84             Element e = element.element("name");
85             System.out.print(e.getText()+"  ");//getText()获取该元素的text文本
86         }
87     }
88 }

 

posted @ 2014-10-21 20:31  迷音  阅读(671)  评论(0编辑  收藏  举报