使用面向对象对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解析:
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的用法的更多相关文章
- XML文件解析DOM解析和SAX解析
解析一个XML文档有哪些内容解析有:dom和sax两种dom:把整个XML文档放入内存,适合XML随机访问,占用内存资源大sax:事件驱动型的XML解析方式,顺序读取,不用一次装载整个文件,遇到标签会 ...
- xml它解析----DOM解析
DOM模型(documentobject model) •DOM解析器在解析XML文档时,会把文档中的全部元素,依照其出现的层次关系.解析成一个个Node对象(节点). •在dom中.节点之间关系例如 ...
- java解析xml的方式DOM,SAX,DOM4J,JDOM,StAX
1)DOM(JAXP Crimson解析器)DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准.DOM是以层次结构组织的节点或信息片断的集合.这个层次结构允许开发人员在树中寻找 特定信息. ...
- java解析xml文档(dom)
DOM解析XML文档 读取本地的xml文件,通过DOM进行解析,DOM解析的特点就是把整个xml文件装载入内存中,形成一颗DOM树形结构,树结构是方便遍历和和操纵. DOM解析的特性就是读取xml文件 ...
- 解析XML文件的几种常见操作方法—DOM/SAX/DOM4j
解析XML文件的几种常见操作方法—DOM/SAX/DOM4j 一直想学点什么东西,有些浮躁,努力使自己静下心来看点东西,哪怕是回顾一下知识.看到了xml解析,目前我还没用到过.但多了解一下,加深点记忆 ...
- XML的解析方式(DOM、SAX、StAX)
(新) XML的解析方式(DOM.SAX.StAX) 博客分类: XML 一般来说,解析XML文件存在着两种方式,一种是event-based API,比如说象SAX,XNI. 第二种是tree ...
- Java解析XML汇总(DOM/SAX/JDOM/DOM4j/XPath)
[目录] 一.[基础知识——扫盲] 二.[DOM.SAX.JDOM.DOM4j简单使用介绍] 三.[性能测试] 四.[对比] 五.[小插曲XPath] 六.[补充] 关键字:Java解析xml.解析x ...
- XML文件解析之--DOM与SAX
xml文件又称‘可扩展性标记语言’,可以对文档和数据进行结构化处理,从而能够在部门.客户和供应商之间进行交换,实现动态内容生成,企业集成和应用开发. 我们在进行web开发的时候离不开xml文件,xml ...
- XML的解析(DOM以及SAX方式)
感谢http://blog.csdn.net/redarmy_chen/article/details/12951649(关于SAX解析)以及http://blog.csdn.net/zhangerq ...
随机推荐
- struts2 DMI
在使用DMI(动态方法调用)的时候要注意struts.xml配置时要把 <constant name="struts.enable.DynamicMethodInvocation&qu ...
- sublime 函数跳转插件 — ctags 安装和使用
ctags 是 sublime 下一个函数跳转的插件,可以让你方便地从函数调用的位置跳到函数定义的位置.相对于其他插件,ctags 的安装稍微有点复杂,这里记录下备忘. 首先,假设已经安装 Packa ...
- CoordinatorLayout自定义Bahavior特效及其源码分析
@[CoordinatorLayout, Bahavior] CoordinatorLayout是android support design包中可以算是最重要的一个东西,运用它可以做出一些不错的特效 ...
- js的一些冷门的用法
1.delete 2.void 0 3.>>> 4.>>0 字符串转为数字 5.[] == ![] 6.
- Google 面试
坚持完成这套学习手册,你就可以去 Google 面试了 系统 指针 value Google 面试 阅读10266 本文为掘金投稿,译文出自:掘金翻译计划 原文地址:Google Intervie ...
- Hibernate用注解实现实体类和表的映射
数据库mysql: 1.一对一 person50表password50表是一对一的关系: password50表中有外键 person_id person实体类: package com.c50.en ...
- ES6新特性:Javascript中Set和WeakSet类型的数据结构
ES6提供了新的数据结构Set,Set对象不是数组, 可以用来保存对象或者基本类型, 所有保存的值都是唯一的, chrome浏览器>38和FF>13,以及nodeJS,对Set支持良好, ...
- 哈希 poj 2002
n个点 求其中有几个正方形 n<1000 暴力4个点就不行了 大概2个点还可以 根基(x*x+y*y)%素数 hash 一下 告诉你2个点求 另外2个点 画个图推一下 重复要/2; #inclu ...
- bzoj1503
treap改了好长时间,erase写错了... #include<iostream> #include<cstdio> #include<cstdlib> usin ...
- Servlet、Filter和Listener
Java Servlet是与平台无关的服务器端组件,运行于Servlet容器中(如Tomcat),Servlet容器负责Servlet和客户端的通信以及调用Servlet的方法,Servlet和客户端 ...