通常我们在项目开发的过程中经常要操作到xml文件,在JAVA这边,我们会很自然的联想到Dom4J这个apache的开源插件,那么我们使用Dom4J如何来读取xml文件呢?下面我们来看看以下4种方法

1.第一种方法:使用dom4j 中saxreader 获取Document容器,利用此容器的elementIterator读取xml文件

public static void readXML() throws DocumentException{

	// 获取读取xml的对象。
SAXReader sr = new SAXReader();
// 得到xml所在位置。然后开始读取。并将数据放入doc中
Document doc = sr.read("src/com/sinojava/EMP.xml");
// 向外取数据,获取xml的根节点。
Element el_root = doc.getRootElement();
// 从根节点下依次遍历,获取根节点下所有子节点
Iterator it = el_root.elementIterator(); // 遍历该子节点
while(it.hasNext()){
// 再获取该子节点下的子节点
Object o = it.next();
Element el_row = (Element)o;
String s = el_row.getText(); Iterator it_row = el_row.elementIterator(); // 遍历节点
while(it_row.hasNext()){
// 获取该节点下的所有数据。
Element el_ename = (Element)it_row.next();
System.out.println(el_ename.getText());
}
}
}

2.第二种方法:使用elements方法进行xml的读取,相当于条件查询,可以根据不同的节点,利用for循环查询该节点下所有的数据。

public static void readXML02() throws DocumentException{
// 获取读取方式
SAXReader sr = new SAXReader();
// 读取xml文件,并且将数据全部存放到Document中
Document doc = sr.read("src/com/sinojava/EMP.xml");
// 获取根节点
Element root = doc.getRootElement();
// 根据根节点,将根节点下 row中的所有数据放到list容器中。
List list = root.elements("ROW"); // 这种遍历方式,是jdk1.5以上的版本支持的遍历方式
for(Object obj:list){
Element row = (Element)obj; // 获取ENAME节点下所有的内容,存入list_row容器中
List list_row = row.elements("ENAME");
for(Object objempno:list_row){
Element el_empno = (Element)objempno;
// 获取节点下的数据。
System.out.println(el_empno.getName()+": "+el_empno.getText());
}
}
}

3. 第三种方法:使用适配器来完成xml的读取。

 public static void readXML04() throws DocumentException{

	 SAXReader sr = new SAXReader();
Document doc = sr.read("src/com/sinojava/EMP.xml");
// 使用观察器的子类,来完成对xml文件的读取。
doc.accept(new VisitorSupport() {
// 利用观察期进行xml的读取。
public void visit(Element el) {
System.out.println(el.getName()+": "+el.getText());
}
});
}

4.第四种方法:使用selectNodes读取xml文件

public static void readXML05(String elementpath) throws DocumentException{
SAXReader sr = new SAXReader();
Document doc = sr.read("src/com/sinojava/EMP.xml");
// 使用selectNodes获取所要查询xml的节点。
List list = doc.selectNodes(elementpath);
// 遍历节点,获取节点内数据。
for(Object obj:list){
Element el = (Element)obj;
System.out.println(el.getText());
}
}

本站文章为宝宝巴士 SD.Team原创,转载务必在明显处注明:(作者官方网站:宝宝巴士)

转载自【宝宝巴士SuperDo团队】原文链接: http://www.cnblogs.com/superdo/p/50080313.html

[JavaWeb基础] 030.dom4j读取xml的4种方法的更多相关文章

  1. [JavaWeb基础] 031.dom4j写入xml的方法

    上一篇我们讲述了dom4j读取xml的4种方法,甚是精彩,那么怎么样写入xml呢?我们直接看下源码实现. public static void main(String[] args) throws E ...

  2. C#中常用的读取xml的几种方法(转)

    本文完全来源于http://blog.csdn.net/tiemufeng1122/article/details/6723764,仅作个人学习之用. XML文件是一种常用的文件格式,例如WinFor ...

  3. 使用dom4j读取xml连接数据库与之单例模式

    使用dom4j读取xml ,加入jar包 dom4j-1.6.1.jar jaxen-1.1-beta-6.jar public class XmlConfigReader { //懒汉式,延迟加载 ...

  4. RSS阅读器(一)——dom4j读取xml(opml)文件

    接触java不久,偶有收获,最近想做一个web版RSS阅读器来锻炼一下.手头有几个从不同版本的foxmail中导出的opml文件,大家应该都知道,opml文件就是xml格式的.那么就先从这里入手,练习 ...

  5. 使用dom4j 读取XML文件

    第一次接触dom4j的时候,感觉这个东西很神秘,因为之前虽然知道XML文件吧,但从来没有用过,一直感觉XML肯定不好操作.当得知,dom4j可以很容易的操作读取XML文件时,不免有些好奇,那么,用do ...

  6. DOM4J读取XML文件

    最近在做DRP的项目,其中涉及到了读取配置文件,用到了DOM4J,由于是刚开始接触这种读取xml文件的技术,好奇心是难免的,于是在网上又找了一些资料,这里就结合找到的资料来谈一下读取xml文件的4中方 ...

  7. Java使用dom4j读取xml时报错:org.dom4j.DocumentException: Error on line 2 of document : Invalid byte 2 of 2-byte UTF-8 sequence. Nested exception: Invalid byte 2 of 2-byte UTF-8 sequence

    1.Java使用dom4j读取xml时报错: org.dom4j.DocumentException: Error on line 2 of document  : Invalid byte 2 of ...

  8. 【XML】利用Dom4j读取XML文档以及写入XML文档

    Dom4j简介 dom4j是一个Java的XML API,是jdom的升级品,用来读写XML文件的.dom4j是一个十分优秀的JavaXML API,具有性能优异.功能强大和极其易使用的特点,它的性能 ...

  9. 简介C#读取XML的两种方式

    简介C#读取XML的两种方式 作者: 字体:[增加 减小] 类型:转载 时间:2013-03-03 在程序中访问进而操作XML文件一般有两种模型,分别是使用DOM(文档对象模型)和流模型,使用DOM的 ...

随机推荐

  1. 2019 Multi-University Training Contest 10 I Block Breaker

    Problem Description Given a rectangle frame of size n×m. Initially, the frame is strewn with n×m squ ...

  2. 图论--网络流--最小割 HDU 2485 Destroying the bus stations(最短路+限流建图)

    Problem Description Gabiluso is one of the greatest spies in his country. Now he's trying to complet ...

  3. alerta 集中化告警信息 -zabbix

    Docker安装Alerta   https://hub.docker.com/D/alerta/alerta-web/ How to use this image To use this image ...

  4. CentOS安装jsoncpp

    两种安装方式: 通过cmake安装 通过scons安装 cmake安装见cmake安装jsoncpp,scons安装见下文. 1. 安装scons .tar.gz export MYSCONS=/ro ...

  5. Java——多线程锁的那些事

    引入 Java提供了种类丰富的锁,每种锁因其特性的不同,在适当的场景下能够展现出非常高的效率. 下面先带大家来总体预览一下锁的分类图 1.乐观锁 VS 悲观锁 乐观锁与悲观锁是一种广义上的概念,体现了 ...

  6. PLAI那些事_07 FAE with Deferred Substitution

    FAE-parse : 一成不变 FAE-Value : interp的最终转让值 ;;numV: value ;;closureV: param-FAE(或value,或function) pair ...

  7. G. Yash And Trees 线段树 + dfs序 + bitset

    这个是要用bitset 一个大整数的二进制 学习推荐博客 这个题目大意就是:给你n,m 还有一个序列,还有一个一棵树,有一种操作一种询问 操作是给你一个节点 把这个节点及其子节点都加上x 询问是 给你 ...

  8. HTML往div中赋值

    HTML中往div赋值 <div id="mazey">content</div> 使用JavaScript: var mazey=document.get ...

  9. redis crackit入侵事件总结

    今天发现服务器有异常进程/opt/yam/yam,上网搜了搜,是由于redis未授权引起的入侵,查了些资料,这里做下总结. 1. 现象 有以下其一现象就要注意是否被入侵 crontab -l 可以看到 ...

  10. SQL 选择列 IF表达式,Contains表达式的用法

    因为业务需要需要使用到, 列中的字段或根据列值是否满足某一条件,进行输出.比如类似与  select if()  ……from……:(但是SQL Server 没有 if 表达式) 比如,如果Scor ...