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. c++里的类型转化

    c++里的类型转换种类 在c++里包含4种,static_cast,dynamic_cast,const_cast,reinterpret_cast. 4种类型 reinterpret_cast: 强 ...

  2. 每日一小练——高速Fibonacci数算法

    上得厅堂,下得厨房,写得代码,翻得围墙,欢迎来到睿不可挡的每日一小练! 题目:高速Fibonacci数算法 内容:先说说Fibonacci数列,它的定义是数列:f1,f2....fn有例如以下规律: ...

  3. 你的App为什么上不了TOP10?

     App市场风起云涌.但是,却仅仅有少数几个App能成为"暴发户",很多其它的则沉淀在应用商店中无人问津. 在移动互联网时代.智能手机成为了中心. 手机之所以智能.就在于手机上 ...

  4. Heritrix与Nutch对比

    Nutch 开发语言:Java http://lucene.apache.org/nutch/ 简介: Apache的子项目之一,属于Lucene项目下的子项目. Nutch是一个基于Lucene,类 ...

  5. hdu1114(完全背包)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1114 分析:很裸的一道完全背包题,只是这里求装满背包后使得价值最少,只需初始化数组dp为inf:dp[ ...

  6. DOM中的动态NodeList与静态NodeList

    GitHub版本号: https://github.com/cncounter/translation/blob/master/tiemao_2014/NodeList/NodeList.md 副标题 ...

  7. 提供一个好用的Oracle Database 11g 下载地址

    提供一个好用的Oracle Database 11g 下载地址,在windows xp 操作系统下,测试通过. http://download.oracle.com/otn/nt/oracle11g/ ...

  8. C#文件操作基础之File类和FileInfo类

    文件和I/O流的差异: 文件是一些具有永久存储及特定顺序的字节组成的一个有序的.具有名称的集合. 因此对于文件,我们经常想到文件夹路径,磁盘存储,文件和文件夹名等方面. I/O流提供一种后备存储写入字 ...

  9. 循环多少次? 【杭电--HDOJ-1799】 附题+具体解释

    循环多少次? Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Sub ...

  10. Android正在使用Handler实现信息发布机制(一)

    上一篇文章,我们谈到了电话Handler的sendMessage方法,最后,我们将进入一个电话 sendMessageAtTime方法,例如下列: public boolean sendMessage ...