DOM4J是dom4j.org出品的一个开源XML解析包。Dom4j是一个易用的、开源的库,用于XML,XPath和XSLT。它应用于Java平台,採用了Java集合框架并全然支持DOM,SAX和JAXP。Hibernate也是用它来读写配置文件的。  

  

一、DOM4j的下载  

dom4j-1.6.1.jar 下载:http://sourceforge.net/directory/os:windows/freshness:recently-updated/?q=dom4j  

  

二、DOM4j解析XML文件

AirPortLine.xml文件例如以下:

<?xml version="1.0" encoding="UTF-8"?>
<AirPortLine>
<line lid="MU2480" num="3">
<id>1</id>
<station>
<sid>1</sid>
<sname>武汉</sname>
</station>
<station>
<sid>2</sid>
<sname>石家庄</sname>
</station>
<station>
<sid>3</sid>
<sname>北京</sname>
</station>
</line>
<line lid="MU2483" num="4">
<id>2</id>
<station>
<sid>1</sid>
<sname>重庆</sname>
</station>
<station>
<sid>2</sid>
<sname>武汉</sname>
</station>
<station>
<sid>3</sid>
<sname>上海</sname>
</station>
<station>
<sid>4</sid>
<sname>东京</sname>
</station>
</line>
<line lid="MU2485" num="2">
<id>3</id>
<station>
<sid>1</sid>
<sname>上海</sname>
</station>
<station>
<sid>2</sid>
<sname>纽约</sname>
</station>
</line>
</AirPortLine>

Java DOM4J解析XML代码例如以下:

package com.hsinghsu.testXML;  

import java.io.File;
import java.util.Iterator; import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.SAXReader; public class testDOM4J { public static void main(String[] args) { try {
File file = new File("AirPortLine.xml");
SAXReader reader = new SAXReader();
Document doc = reader.read(file); parseDOM4J(doc);// 解析XML文档 //String xmlStr = getStringFromXML(doc);// 将XML文档转换为String
//System.out.println("xmlStr:" + xmlStr); //String str = "<?xml version='1.0' encoding='UTF-8'?><AirPortLine><line lid='MU2480' num='3'><id>1</id><station><sid>1</sid><sname>武汉</sname></station><station><sid>2</sid><sname>石家庄</sname></station><station><sid>3</sid><sname>北京</sname></station></line><line lid='MU2482' num='4'><id>2</id><station><sid>1</sid><sname>重庆</sname></station><station><sid>2</sid><sname>武汉</sname></station><station><sid>3</sid><sname>上海</sname></station><station><sid>4</sid><sname>东京</sname></station></line><line lid='MU2483' num='2'><id>3</id><station><sid>1</sid><sname>上海</sname></station><station><sid>2</sid><sname>纽约</sname></station></line></AirPortLine>";
//Document document = getXMLDocFromString(str);// 将String转换为XML文档 } catch (Exception e) {
System.out.println("Can't read the file");
}
} // 解析XML文档
private static void parseDOM4J(Document doc) {
Element root = doc.getRootElement();
for (Iterator iter = root.elementIterator("line"); iter.hasNext();) {// 遍历line结点的全部子节点,也能够使用root.elementIterator()
Element element = (Element) iter.next(); Attribute lidAttr = element.attribute("lid");// 获取<line>元素的属性
String lid = lidAttr.getValue();// 获取<line>元素的属性值
Attribute numAttr = element.attribute("num");// 获取<line>元素的属性
String num = numAttr.getValue();// 获取<line>元素的属性值 String id = element.elementText("id");// 获取<line>元素下<id></id>的值 System.out.println("==lid:" + lid);
System.out.println("==num:" + num);
System.out.println("==路线id:" + id); for (Iterator iterInner = element.elementIterator("station"); iterInner.hasNext();) { // 遍历station结点的全部子节点
Element elementInner = (Element) iterInner.next(); String sid = elementInner.elementText("sid");// 获取<station>元素下<sid></sid>的值
String sname = elementInner.elementText("sname");// 获取<station>元素下<sname></sname>的值 System.out.println("----站--sid:" + sid);
System.out.println("----站--sname:" + sname);
} }
} // 将XML文档转换为String
private static String getStringFromXML(Document doc) {
return doc.asXML();
} // 将String转换为XML文档
private static Document getXMLDocFromString(String str) {
try {
return DocumentHelper.parseText(str);
} catch (DocumentException e) {
e.printStackTrace();
return null;
} }

Java DOM4J读取XML的更多相关文章

  1. java DOM4J 读取XML

    最近学习Java,在处理XML文档的时候,查阅相关资料,发现了DOM4J这个jre库,相对C#的XML处理来说,功能还算是跟得上 下面展示一篇我自己写的一个XML读取测试 import java.ut ...

  2. 深入浅出Java Dom4j读取XML

    在以前自己使用的xml较少,只是了解其很强大,现在可算是在DRP中,真正的开始使用它了,以前只是简单的理解xml,xml即可扩展标记语言,简单的使用,具体是什么?怎么用?还是一直让自己期待的. 首先来 ...

  3. 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 ...

  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 Domj4读取xml文件

    先概括,再以代码形式给出. 获取节点: Iterator  Element.nodeIterator();  //获取当前标签节点下的所有子节点 获取 标签: Element Document.get ...

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

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

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

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

随机推荐

  1. Android开源client之LookAround学习(一)Application &amp; 网络框架

    之前看过开源clientLookAround(下载地址:http://download.csdn.net/detail/hualulove/7306807),链接:http://blog.csdn.n ...

  2. 30第二建筑Github Page

    从我原来博客的前端传输.链接:http://www.hacke2.cn/create-github-page/ 假设中国每一个程序猿都写博客,那么中国IT届的春天就来了 有同学问我的站点是怎么创建的, ...

  3. Android LCD(三):Samsung LCD接口篇

    关键词:android LCD控制器 Framebuffer PWM  平台信息: 内核:linux2.6/linux3.0 系统:android/android4.0  平台:samsung exy ...

  4. SE 2014年5月8日

    两企业接入到 Internet(A公司和B公司),企业内部的用户及服务器均能够访问到 Internet. 2. A公司规模较大,采用了接入层/汇聚层/核心层的划分模式,接入层划分了多vLan(如图), ...

  5. Cantor的数表 【找规律】

    小俞同学,近期勤学苦练数学,对一种数表产生了兴趣. 数表例如以下: 1/1 1/2 1/3 1/4 1/5 2/1 2/2 2/3 2/4 3/1 3/2 3/3 4/1 4/2 5/1 她冥思苦相了 ...

  6. PHP移动互联网开发笔记(2)——变量及常量

    原文地址:http://www.php100.com/html/php/rumen/2014/0326/6703.html 一.PHP5.4的基本的语法格式 1.PHP的切割符 view source ...

  7. CF 460C Present 【DP+】主意

    给你n高树花.m日,每天连续浇筑w鲜花.一天一次,花长1高度单位 求m天后.最矮的花最高是多少 最大最小问题能够用二分来解 首先我们能够得到全部花的最矮高度即答案的下界,给这个花浇m天即是答案的上界 ...

  8. Linux内核的同步机制---自旋锁

    自旋锁的思考:http://bbs.chinaunix.net/thread-2333160-1-1.html 近期在看宋宝华的<设备驱动开发具体解释>第二版.看到自旋锁的部分,有些疑惑. ...

  9. Visual Studio跨平台开发实战(4) - Xamarin Android基本控制项介绍

    原文 Visual Studio跨平台开发实战(4) - Xamarin Android基本控制项介绍 前言 不同于iOS,Xamarin 在Visual Studio中针对Android,可以直接设 ...

  10. Android 纯代码加入点击效果

    项目中非常多的Button, 同一时候配置非常多button切图,Selector是不是非常烦, 使用以下这个类,就能够直接为Button添加点击效果. 不用多个图片,不用Selector. 使用方法 ...