这是一个比较简单的例子,主要是运用面向对象的思想,对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解析:

 package d20160624;

 import java.io.File;
import java.io.IOException; import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException; import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException; /*
* 使用DOM解析student.xml,输出打印学生信息
*/
public class DomParseStudent {
private Document document;
private String name,age,school; // 生成dom树
public void getDom(File file){
// 创建解析器工厂
DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
try {
// 创建解析器对象
DocumentBuilder db=dbf.newDocumentBuilder();
// 解析XML文件得到DOM树
this.document=db.parse(file);
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} }
// 解析XML
public void showEle(){
DomParseStudent dps=new DomParseStudent();
NodeList students=document.getElementsByTagName("student");
for(int i=0;i<students.getLength();i++){
Element student=(Element) students.item(i);
NodeList names=student.getElementsByTagName("name");
for(int j=0;j<names.getLength();j++){
Element name=(Element) names.item(j);
this.name=name.getTextContent();
}
NodeList ages=student.getElementsByTagName("age");
for(int k=0;k<ages.getLength();k++){
Element age=(Element) ages.item(k);
this.age=age.getTextContent();
}
NodeList schools=student.getElementsByTagName("school");
for(int p=0;p<schools.getLength();p++){
Element school=(Element) schools.item(p);
this.school=school.getTextContent();
} Student stu=new Student(name, age, school);
stu.showInfo(); }
} public static void main(String[] args){
DomParseStudent dps=new DomParseStudent();
File file=new File("D:\\Java_study\\workspace\\myeclipse\\HomeWork\\src\\d20160624\\student.xml");
dps.getDom(file);
dps.showEle();
}
}

dom4j解析:

 package d20160624;

 import java.io.File;
import java.util.Iterator;
import java.util.List; import org.dom4j.io.SAXReader;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element; /*
* 使用dom4j解析student.xml,输出打印学生信息
*/
public class Dom4jStudent {
private Document document;
private String name,age,school;
// 生成dom树
public void getDom(File file){
// 创建SAXReader
SAXReader sax=new SAXReader();
try {
// 读取xml文件,生成dom树
this.document=sax.read(file);
} catch (DocumentException e) {
e.printStackTrace();
}
} // 读取XML文件
public void showXML(){
Element root=document.getRootElement();
List<Element> student=root.elements();
for(Iterator<Element> stuit=student.iterator();stuit.hasNext();){
Element stu=stuit.next();
List<Element> names=stu.elements("name");
for(Iterator<Element> name=names.iterator();name.hasNext();){
Element nameel=name.next();
this.name=nameel.getText();
}
List<Element> ages=stu.elements("age");
for(Iterator<Element> age=ages.iterator();age.hasNext();){
Element ageel=age.next();
this.age=ageel.getText();
}
List<Element> schools=stu.elements("school");
for(Iterator<Element> school=schools.iterator();school.hasNext();){
Element schoolel=school.next();
this.school=schoolel.getText();
}
Student stu1=new Student(name, age, school);
stu1.showInfo();
}
} public static void main(String[] args){
Dom4jStudent d4j=new Dom4jStudent();
File file=new File("D:\\Java_study\\workspace\\myeclipse\\HomeWork\\src\\d20160624\\student.xml");
d4j.getDom(file);
d4j.showXML();
}
}

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

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

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

    解析一个XML文档有哪些内容解析有:dom和sax两种dom:把整个XML文档放入内存,适合XML随机访问,占用内存资源大sax:事件驱动型的XML解析方式,顺序读取,不用一次装载整个文件,遇到标签会 ...

  2. xml它解析----DOM解析

    DOM模型(documentobject model) •DOM解析器在解析XML文档时,会把文档中的全部元素,依照其出现的层次关系.解析成一个个Node对象(节点). •在dom中.节点之间关系例如 ...

  3. java解析xml的方式DOM,SAX,DOM4J,JDOM,StAX

    1)DOM(JAXP Crimson解析器)DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准.DOM是以层次结构组织的节点或信息片断的集合.这个层次结构允许开发人员在树中寻找 特定信息. ...

  4. java解析xml文档(dom)

    DOM解析XML文档 读取本地的xml文件,通过DOM进行解析,DOM解析的特点就是把整个xml文件装载入内存中,形成一颗DOM树形结构,树结构是方便遍历和和操纵. DOM解析的特性就是读取xml文件 ...

  5. 解析XML文件的几种常见操作方法—DOM/SAX/DOM4j

    解析XML文件的几种常见操作方法—DOM/SAX/DOM4j 一直想学点什么东西,有些浮躁,努力使自己静下心来看点东西,哪怕是回顾一下知识.看到了xml解析,目前我还没用到过.但多了解一下,加深点记忆 ...

  6. XML的解析方式(DOM、SAX、StAX)

    (新)  XML的解析方式(DOM.SAX.StAX) 博客分类: XML   一般来说,解析XML文件存在着两种方式,一种是event-based API,比如说象SAX,XNI. 第二种是tree ...

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

    [目录] 一.[基础知识——扫盲] 二.[DOM.SAX.JDOM.DOM4j简单使用介绍] 三.[性能测试] 四.[对比] 五.[小插曲XPath] 六.[补充] 关键字:Java解析xml.解析x ...

  8. XML文件解析之--DOM与SAX

    xml文件又称‘可扩展性标记语言’,可以对文档和数据进行结构化处理,从而能够在部门.客户和供应商之间进行交换,实现动态内容生成,企业集成和应用开发. 我们在进行web开发的时候离不开xml文件,xml ...

  9. XML的解析(DOM以及SAX方式)

    感谢http://blog.csdn.net/redarmy_chen/article/details/12951649(关于SAX解析)以及http://blog.csdn.net/zhangerq ...

随机推荐

  1. Struts2 动态结果和带参数的跳转

    完整代码:Struts16ActionResultsDemo.rar 1.动态结果. 有时我们需要在Action里取得我个要转跳的页面 看一下我们的struts.xml <?xml versio ...

  2. opencv6.3-imgproc图像处理模块之边缘检测

    接opencv6.2-improc图像处理模块之图像尺寸上的操作 本文大部分都是来自于转http://www.opencv.org.cn/opencvdoc/2.3.2/html/doc/tutori ...

  3. Laravel 下结合阿里云邮件推送服务

    最近在学习laravel做项目开发,遇到注册用户推送邮件的问题,之前用java做的时候是自己代码写的,也就是用ECS推送邮件,但是现在转php的laravel了就打算用php的邮件发送功能来推送邮件, ...

  4. js自定义事件

    自定义事件的本质,创建一个对象,然后把事件的名字作为对象的一个属性,然后value是一个[],把此事件的所以回调都push进去. 写一个很基本的,没有把对象暴露出去的js的自定义事件. var eve ...

  5. mutex与semaphore的区别

    网摘1:Mutex 的发音是 /mjuteks/ ,其含义为互斥(体),这个词是Mutual Exclude的缩写.Mutex在计算机中是互斥也就是排他持有的一种方式,和信号量-Semaphore有可 ...

  6. 【JavaEE企业应用实战学习记录】struts配置文件详细解析

    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-/ ...

  7. 如何在UIimageview里显示一张图片里的某一部分

    首先,获取想要显示的部分的大小及位置 CGRect rect: 然后,将此部分从图片中剪切出来 CGImageRef imageRef=CGImageCreateWithImageInRect([im ...

  8. HTML5+AJAX原生分块上传文件的关键参数设置

    processData:false 这是jquery.ajax的一个参数.默认值为true,表示会将非字符串对象自动变成k1=v1&k2=v2的形式,例如一个数组参数{d:[1,2]},到服务 ...

  9. gettter,delatter,settter

    class Foo: x = 1 def __init__(self,y): self.y=y def __getattr__(self, item): print('自行--getatter') d ...

  10. Java--剑指offer(10)

    46.每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此.HF作为牛客的资深元老,自然也准备了一些小游戏.其中,有个游戏是这样的:首先,让小朋友们围成一个大圈.然后,他随机指定一 ...