通常我们在项目开发的过程中经常要操作到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. P1495 CRT,P4777 EXCRT

    updata on 2020.4.11 修正了 excrt 的一处笔误 CRT 求解方程: \[\begin{cases} x \equiv a_1 \pmod {m_1}\\ x \equiv a_ ...

  2. VSCode 安装 React 项目

    1 下载nodejs 安装 (此时npm 和 node环境都已经装好) 2 安装淘宝镜像 npm install -g cnpm --registry=https://registry.npm.tao ...

  3. 重新认识 Spring IOC

    spring IOC 剖析 再品IOC与DI IOC(Inversion of Control) 控制反转:所谓控制反转,就是把原先我们代码里面需要实现的对象创 建.依赖的代码,反转给容器来帮忙实现. ...

  4. E - Tunnel Warfare HDU - 1540 F - Hotel G - 约会安排 HDU - 4553 区间合并

    E - Tunnel Warfare HDU - 1540 对这个题目的思考:首先我们已经意识到这个是一个线段树,要利用线段树来解决问题,但是怎么解决呢,这个摧毁和重建的操作都很简单,但是这个查询怎么 ...

  5. 用 GitHub Action 构建一套 CI/CD 系统

    ​ 缘起 Nebula Graph 最早的自动化测试是使用搭建在 Azure 上的 Jenkins,配合着 GitHub 的 Webhook 实现的,在用户提交 Pull Request 时,加个 r ...

  6. python语法学习第十天--类与对象

    python面向对象语言 对象=属性+方法 OO(Object oriented面向对象)的特征: ①封装,信息隐蔽技术②继承:class A(BaseClass):③多态   类:图纸 class ...

  7. 管理环境一:venv

    初衷: 在工作的时候,我们会有很多个项目,每个项目使用的库的版本不一样,导致我们切换项目的时候会很麻烦. 比如:我有两个django项目,项目一使用的版本是 django 1.7 , 项目二使用的版本 ...

  8. flink批处理从0到1学习

    一.DataSet API之Data Sources(消费者之数据源) 介绍: flink提供了大量的已经实现好的source方法,你也可以自定义source 通过实现sourceFunction接口 ...

  9. Luogu P5603 小C与桌游【贪心+拓扑排序】

    [Description]https://www.luogu.com.cn/problem/P5603 \(\;\) 题意可以简化为:一个不保证联通,n个点,m条边的DAG(有向无环图),构造一个拓扑 ...

  10. python --设置Python3 设置为机器默认

    echo alias python=python3 >> ~/.bashrc source ~/.bashrc 反之,如果仍然需要Python2.7 ,则改成2.7就行. update : ...