这是一个比较简单的例子,主要是运用面向对象的思想,对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. 微信公众平台开发(71)OAuth2.0网页授权

    微信公众平台开发 OAuth2.0网页授权认证 网页授权获取用户基本信息 作者:方倍工作室 微信公众平台最近新推出微信认证,认证后可以获得高级接口权限,其中一个是OAuth2.0网页授权,很多朋友在使 ...

  2. UWP 拉勾客户端

    前些天, 用 Xamarin.Forms (XF) 将就着写了个拉勾的 UWP 和 Android 的客户端. XF 对 Android  和 IOS 的支持做的很到位, 但是对 UWP 的支持目前仅 ...

  3. MVVM小记

    这篇小记源自于codeproject上的一篇文章 http://www.codeproject.com/Articles/100175/Model-View-ViewModel-MVVM-Explai ...

  4. mac下CornerstoneSVN出错 Description : The working copy is locked due to a previous error

    使用CornerStone工具update最新SVN代码报错:The working copy is locked due to a previous error,不仅无法上传,也无法更新,错误提示被 ...

  5. 手把手教你在Windows下搭建React Native Android开发环境

    最近看到React Native好像好厉害的样子,好奇心驱使之下体验了一下并将在Window下搭建React Natvie Android环境的步骤记录下来,并有需要的朋友参考.(我都是参考官方文档的 ...

  6. suggest插件实现下拉选择筛选

    实现的效果展示: 代码如下: 1.需要引入jquery,bootstrap-suggest.js,bootstrap.min.css 2.html页面代码: <!DOCTYPE html> ...

  7. C# 如何捕获键盘按钮和组合键以及KeyPress/KeyDown事件之间的区别 (附KeyChar/KeyCode值)

    1. 首先将窗口属性KeyPreview设为true,如果属性对话框中找不到,就直接在代码里添加: 2. 添加KeyPress / KeyDown事件: 1.KeyPress 和KeyDown .Ke ...

  8. scrollTop和offsetTop的区别,scrollTopLeft和offsetLeft的区别

    scrollTop和offsetTop的区别:scrollTop是指某个可滚动区块向下滚动的距离,比如向下滚动了10个像素,那么这个元素的scrollTop属性值就是10,这个属性的值是可读写的,且不 ...

  9. JavaScript instanceof 运算符深入剖析

    简介: 随着 web 的发展,越来越多的产品功能都放在前端进行实现,增强用户体验.而前端开发的主要语言则是 JavaScript.学好 JavaScript 对开发前端应用已经越来越重要.在开发复杂产 ...

  10. Android开发之Fragment

    一.Fragment生命周期: 二.动态添加Fragment的三步: 1.获得Fragment的管理者FragmentManager FragmentManager fragmentManager = ...