天天看点

解析xml——采用Jdom与dom4J方式读xml文档

  对于java,现在目前流行解析xml的技术有4种。它们分别是:dom、jdom、dom4j、sax。前3种是基于dom树解析的,后一种是基于事件处理机制的。其中最流行的为jdom与dom4j的解析方式。以下分别是jdom与dom4j方式读xml文档。有什么错误与建议希望大家给我邮件,大家共同进步。

  xml文档如下:

  文档名称:studentInfo.xml

1 <?xml version="1.0" encoding="UTF-8"?>
 2 <class>
 3     <student no="1001">
 4         <name>张三</name>
 5         <sex>男</sex>
 6         <age>20</age>
 7         <score>
 8             <java>90</java>
 9             <net>85</net>
10             <html>87</html>
11         </score>
12     </student>
13     
14     <student no="1002">
15         <name>xi</name>
16         <sex>男</sex>
17         <age>20</age>
18         <score>
19             <java>78</java>
20             <net>79</net>
21             <html>87</html>
22         </score>
23     </student>
24 </class>      

一.Jdom方式读xml文档,代码如下:

   使用此方式需要导入:org.jdom.jar这个包

解析xml——采用Jdom与dom4J方式读xml文档
解析xml——采用Jdom与dom4J方式读xml文档

View Code

1 import java.io.FileInputStream;
 2 import java.util.List;
 3 import org.jdom.Document;
 4 import org.jdom.Element;
 5 import org.jdom.input.SAXBuilder;
 6 
 7 /**
 8  * 解析xml
 9  * 用jdom读studentInfo.xml中的数据
10  * @author dell
11  *
12  */
13 public class ReaderXML {
14     
15     public static void main(String[] args) {
16         
17         //1.新建一个解析器
18         SAXBuilder builder=new SAXBuilder();
19         
20         
21         Document doc=null;
22         try {
23             //2.获取解析的文档
24             doc=builder.build(new FileInputStream("G:\\javaWeb\\chapter01\\WebRoot\\studentInfo.xml"));
25             
26         } catch (Exception e) {
27             
28             e.printStackTrace();
29         }
30         
31         //3.获取根节点
32         Element root=doc.getRootElement();
33         
34         //4.获取子节点
35         List<Element> list=root.getChildren();
36         
37         //5.循环读取数据
38         System.out.println("学号\t姓名\t性别\t年龄\tjava成绩\t.net成绩\thtml成绩");
39         
40         for (Element element : list) {
41             
42             List<Element> score=element.getChildren("score");//获取score节点下的子节点
43             
44             for (Element s : score) {
45                 
46                 System.out.print(element.getAttributeValue("no")+"\t"+element.getChildText("name")+"\t"+element.getChildText("sex")+"\t"+element.getChildText("age")+"\t");
47                 System.out.print(s.getChildText("java")+"\t"+s.getChildText("net")+"\t"+s.getChildText("html")+"\n");
48             }
49                 
50         }
51         
52     }
53 }      

二.dom4J方式读xml文档,代码如下:

  使用此方式需要导入:org.dom4j-1.6.1.jar这个包

1 import java.io.*;
 2 import java.util.List;
 3 
 4 import org.dom4j.Document;
 5 import org.dom4j.Element;
 6 import org.dom4j.io.SAXReader;
 7 
 8 /**
 9  * 解析xml
10  * 读取studentInfo.xml中的数据
11  * 采用dom4j方式解析
12  * dom4j是jdom一种优化式的封装
13  * @author dell
14  *
15  */
16 public class ReaderXML {
17     
18     public static void main(String[] args) {
19         //1.创建解析器
20         SAXReader reader=new SAXReader();
21         
22         
23         Document doc=null;
24         
25         try {
26             //2.得到document对象
27             doc=reader.read(new File("G:\\javaWeb\\chapter01\\WebRoot\\studentInfo.xml"));
28             
29         } catch (Exception e) {
30             
31             e.printStackTrace();
32         }
33         //3.得到根节点
34         Element root=doc.getRootElement();
35         
36         //4.得到子节点
37         List<Element> list=root.elements();
38         
39         //5.取值
40         System.out.println("学号\t姓名\t性别\t年龄\tjava成绩\t.net成绩\thtml成绩");
41         
42         for (Element element : list) {
43             
44             List<Element> score=element.elements("score");//得到score下的子节点
45             
46             for (Element s : score) {
47                 
48                 System.out.print(element.attributeValue("no")+"\t"+element.elementText("name")+"\t"+element.elementText("sex")+"\t"+element.elementText("age")+"\t");
49                 
50                 System.out.print(s.elementText("java")+"\t"+s.elementText("net")+"\t"+s.elementText("html")+"\n");
51             }
52         }
53         
54     }
55 }