使用面向对象对XML进行解析:dom和dom4j的用法

这是一个比较简单的例子,主要是运用面向对象的思想,对XML文件进行解析,用dom和dom4j方法

<?xml version="1.0" encoding="utf-8"?>
<students>
    <student>
        <name>张三</name>
        <age>20</age>
        <school>北京大学</school>
    </student>
    <student>
        <name>李四</name>
        <age>18</age>
        <school>清华大学</school>
    </student>
</students>

代码如下:

学生对象类

package d20160624;

public class Student {
    private String name;
    private String age;
    private String school;

    public Student() {
    }

    public Student(String name, String age, String school) {
        this.name = name;
        this.age = age;
        this.school = school;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }

    public String getSchool() {
        return school;
    }

    public void setSchool(String school) {
        this.school = school;
    }
    //打印学生信息
    public void showInfo(){
        System.out.println("姓名:"+this.name+"\n年纪:"+this.age+"\n学校:"+this.school);
        System.out.println("***********");
    }

}

dom解析:

 1 package d20160624;
 2
 3 import java.io.File;
 4 import java.io.IOException;
 5
 6 import javax.xml.parsers.DocumentBuilder;
 7 import javax.xml.parsers.DocumentBuilderFactory;
 8 import javax.xml.parsers.ParserConfigurationException;
 9
10 import org.w3c.dom.Document;
11 import org.w3c.dom.Element;
12 import org.w3c.dom.NodeList;
13 import org.xml.sax.SAXException;
14
15 /*
16  * 使用DOM解析student.xml,输出打印学生信息
17  */
18 public class DomParseStudent {
19     private Document document;
20     private String name,age,school;
21
22
23     //    生成dom树
24     public void getDom(File file){
25 //        创建解析器工厂
26         DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
27         try {
28 //            创建解析器对象
29             DocumentBuilder db=dbf.newDocumentBuilder();
30 //            解析XML文件得到DOM树
31             this.document=db.parse(file);
32         } catch (ParserConfigurationException e) {
33             e.printStackTrace();
34         } catch (SAXException e) {
35             e.printStackTrace();
36         } catch (IOException e) {
37             e.printStackTrace();
38         }
39
40
41     }
42 //    解析XML
43     public void showEle(){
44         DomParseStudent dps=new DomParseStudent();
45         NodeList students=document.getElementsByTagName("student");
46         for(int i=0;i<students.getLength();i++){
47             Element student=(Element) students.item(i);
48             NodeList names=student.getElementsByTagName("name");
49             for(int j=0;j<names.getLength();j++){
50                 Element name=(Element) names.item(j);
51                 this.name=name.getTextContent();
52             }
53             NodeList ages=student.getElementsByTagName("age");
54             for(int k=0;k<ages.getLength();k++){
55                 Element age=(Element) ages.item(k);
56                 this.age=age.getTextContent();
57             }
58             NodeList schools=student.getElementsByTagName("school");
59             for(int p=0;p<schools.getLength();p++){
60                 Element school=(Element) schools.item(p);
61                 this.school=school.getTextContent();
62             }
63
64             Student stu=new Student(name, age, school);
65             stu.showInfo();
66
67         }
68     }
69
70     public static void main(String[] args){
71         DomParseStudent dps=new DomParseStudent();
72         File file=new File("D:\\Java_study\\workspace\\myeclipse\\HomeWork\\src\\d20160624\\student.xml");
73         dps.getDom(file);
74         dps.showEle();
75     }
76 }

dom4j解析:

 1 package d20160624;
 2
 3 import java.io.File;
 4 import java.util.Iterator;
 5 import java.util.List;
 6
 7 import org.dom4j.io.SAXReader;
 8 import org.dom4j.Document;
 9 import org.dom4j.DocumentException;
10 import org.dom4j.Element;
11
12 /*
13  * 使用dom4j解析student.xml,输出打印学生信息
14  */
15 public class Dom4jStudent {
16     private Document document;
17     private String name,age,school;
18 //    生成dom树
19     public void getDom(File file){
20 //        创建SAXReader
21         SAXReader sax=new SAXReader();
22         try {
23 //            读取xml文件,生成dom树
24             this.document=sax.read(file);
25         } catch (DocumentException e) {
26             e.printStackTrace();
27         }
28     }
29
30 //    读取XML文件
31     public void showXML(){
32         Element root=document.getRootElement();
33         List<Element> student=root.elements();
34         for(Iterator<Element> stuit=student.iterator();stuit.hasNext();){
35             Element stu=stuit.next();
36             List<Element> names=stu.elements("name");
37             for(Iterator<Element> name=names.iterator();name.hasNext();){
38                 Element nameel=name.next();
39                 this.name=nameel.getText();
40             }
41             List<Element> ages=stu.elements("age");
42             for(Iterator<Element> age=ages.iterator();age.hasNext();){
43                 Element ageel=age.next();
44                 this.age=ageel.getText();
45             }
46             List<Element> schools=stu.elements("school");
47             for(Iterator<Element> school=schools.iterator();school.hasNext();){
48                 Element schoolel=school.next();
49                 this.school=schoolel.getText();
50             }
51             Student stu1=new Student(name, age, school);
52             stu1.showInfo();
53         }
54     }
55
56     public static void main(String[] args){
57         Dom4jStudent d4j=new Dom4jStudent();
58         File file=new File("D:\\Java_study\\workspace\\myeclipse\\HomeWork\\src\\d20160624\\student.xml");
59         d4j.getDom(file);
60         d4j.showXML();
61     }
62 }

其实2种方式,都可以,都是各种包中类的方法的使用,会灵活运用就可以了!

时间: 2024-08-04 22:11:07

使用面向对象对XML进行解析:dom和dom4j的用法的相关文章

XML文件解析DOM解析和SAX解析

解析一个XML文档有哪些内容解析有:dom和sax两种dom:把整个XML文档放入内存,适合XML随机访问,占用内存资源大sax:事件驱动型的XML解析方式,顺序读取,不用一次装载整个文件,遇到标签会触发一个事件,适合对XML的顺序访问,占用内存资源稍小 Node: XML 文档的 documentElement 属性是根节点. nodeName 属性是节点的名称.nodeName 是只读的 元素节点的 nodeName 与标签名相同 属性节点的 nodeName 是属性的名称 文本节点的 no

XML数据解析 Dom方式解析

这是一份XML数据,与上一篇文章的JSON数据内容是相同的,上一篇是JSON格式,这篇文章使用的是XML格式的数据 本文以上篇文章的代码为基础修改: 1>数据形式变为XML数据,所以要修改文件的路径 2>因为数据格式不同,所以解析方式不同先采用GData方式解析XML文档 需求:将此XML文档中的数据解析出来,通过tableView展示出来,上一篇文章的需求相同,只是数据与解析方法不同 此处只给出解析本分代码,即JSON解析2文章中代码部分,61--89行部分,开始部分修改文件路径. 使用GD

XML学习总结-DOM和SAX解析-综合案例-(四)

============DOM解析    vs   SAX解析             ======== DOM解析 SAX解析 原理: 一次性加载xml文档,不适合大容量的文件读取 原理: 加载一点,读取一点,处理一点.适合大容量文件的读取 DOM解析可以任意进行增删改成 SAX解析只能读取 DOM解析任意读取任何位置的数据,甚至往回读 SAX解析只能从上往下,按顺序读取,不能往回读 DOM解析面向对象的编程方法(Node,Element,Attribute),Java开发者编码比较简单. S

XML文件解析之--DOM与SAX

xml文件又称‘可扩展性标记语言’,可以对文档和数据进行结构化处理,从而能够在部门.客户和供应商之间进行交换,实现动态内容生成,企业集成和应用开发. 我们在进行web开发的时候离不开xml文件,xml文件无处不在,这次就烂讨论一下xml常用的解析方法及其CRUD操作,欢迎大家交流指正. 我们先来看看两种解析方式的过程,比较一下他们的优劣之处. SAX解析方式:它对xml文档进行逐行扫描,一边扫描一边解析.当扫描到文档(document)开始与结束.元素(element)开始与结束.文档(docu

XML的两种解析方式逐行解析(SAX解析)节点解析(DOM解析);

SAX逐行解析 SAX:SimpleAPIfor XML.基于事件驱动的解析方式,逐行解析数据.(采用协议回调机制) NSXMLParser是iOS自带的XML解析类.采用SAX方式解析数据 解析过程由NSXMLParserDelegate协议方法回调 解析过程:开始标签->取值->结束标签->取值 DOM解析 DOM:DocumentObjectModel(文档对象模型).解析时需要将XML文件整体读入,并且将XML结构化成树状,使用时再通过树状结构读取相关数据 GDataXMLNod

XML - 十分钟了解XML结构以及DOM和SAX解析方式

引言 NOKIA 有句著名的广告语:"科技以人为本".不论什么技术都是为了满足人的生产生活须要而产生的.详细到小小的一个手机.里面蕴含的技术也是浩如烟海.是几千年来人类科技的结晶,单个人穷其一生也未必能掌握其一角.只是个人一直觉得主要的技术和思想是放之四海而皆准的,很多技术未必须要我们从头到尾再研究一遍.我们要做的就是站在巨人的肩膀上.利用其成果来为人们的需求服务. 随着移动互联网时代的大潮.越来越多的App不光是须要和网络server进行数据传输和交互,也须要和其它 App 进行数据

java中的xml简介与DOM解析xml

1. xml简介 XML:指可扩展标记语言, Extensible Markup Language:类似HTML.XML的设计宗旨是传输数据,而非显示数据. 一个xml文档实例: 1 <?xml version="1.0" encoding="UTF-8"?> 2 <company name="Tencent" address="深圳市南山区"> 3 <department deptNo=&quo

Java解析XML汇总(DOM/SAX/JDOM/DOM4j/XPath)

[目录] 一.[基础知识——扫盲] 二.[DOM.SAX.JDOM.DOM4j简单使用介绍] 三.[性能测试] 四.[对比] 五.[小插曲XPath] 六.[补充] 关键字:Java解析xml.解析xml四种方法.DOM.SAX.JDOM.DOM4j.XPath [引言] 目前在Java中用于解析XML的技术很多,主流的有DOM.SAX.JDOM.DOM4j,下文主要介绍这4种解析XML文档技术的使用.优缺点及性能测试. 一.[基础知识——扫盲] sax.dom是两种对xml文档进行解析的方法(

【Java编程】DOM XML Parser解析、遍历、创建XML

1.前言 DOM XML Parser介绍 DOM 是 W3C 处理 XML 的标准 API,它是许多其它与 XML 处理相关的标准的基础,不仅是 Java,其它诸如 Javascript,PHP,MS .NET 等等语言都实现了该标准,成为了应用最为广泛的 XML 处理方式.当然,为了能提供更多更加强大的功能,Java 对于 DOM 直接扩展工具类有很多,比如很多 Java 程序员耳熟能详的 JDOM,DOM4J 等等,它们基本上属于对 DOM 接口功能的扩充,保留了很多 DOM API 的特