首页 > 代码库 > dom4j解析XML文件(2)—读取XML文件

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     @Test31     /**32      * 获取XML文件的根元素,并打印输出根元素的名字33      * 输出结果:list34      */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     @Test41     /**42      * 获取当前元素下指定名字的子元素,并输出该元素的属性名字和属性值43      * 输出结果:id 1 id 144      */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     @Test57     /**58      * 获取该元素下所有的元素,返回List集合,迭代输出所有的元素名字,属性名和属性值59      * 输出结果:      元素名:emp 属性名:id  属性值:160                 元素名:emp 属性名:id  属性值:261                 元素名:emp 属性名:id  属性值:362                 元素名:emp 属性名:id  属性值:463                 元素名:emp 属性名:id  属性值:564      */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     @Test75     /**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 }

 

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