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. sqlit使用要点之引入libsqlite3.dylib

    怎样引入libsqlite3.dylib? 在.h 或 .cpp文件里包括相应的头文件

  2. 你真的了解mysql的varchar字段的长度有多少吗?

    今天在设计系统字段的时候, 发现自己对varchar还不够了解.我设了一个字段.类型为VARCHER,然后我就往里面测试性了写了东西.发现没有多少就满了.我觉得奇怪,5.5版本以上的MYSQL不是有6 ...

  3. Python的Tkinter去除边框

    from Tkinter import * class Application(Frame): def __init__(self,master=None, *args, **kwargs): Fra ...

  4. Java调用IIS发布的WebService

    之前的一篇博客说了一个实例,就是用VS2005在IIS上发布WebService.今天我们来实现在Eclipse上用Java来调用昨天发布的WebService. 首先咋在浏览器中输入http://1 ...

  5. JS验证身份证的合法性

    //验证身份证的合法性 function IdentityCodeValid(code) { var city={11:"北京",12:"天津",13:&quo ...

  6. Knockout应用开发指南 第二章:监控属性(Observables)

    原文:Knockout应用开发指南 第二章:监控属性(Observables) 关于Knockout的3个重要概念(Observables,DependentObservables,Observabl ...

  7. Jndi使用好处,与简单实例【JBOSS】

    JNDI是 Java 命名与目录接口(Java Naming and Directory Interface),在J2EE规范中是重要的规范之一,不少专家认为,没有透彻理解JNDI的意义和作用,就没有 ...

  8. Java文件压缩分割(待)

    http://blog.csdn.net/ycg01/article/details/1366648

  9. Codeforces Round #277.5 (Div. 2)---B. BerSU Ball (贪心)

    BerSU Ball time limit per test 1 second memory limit per test 256 megabytes input standard input out ...

  10. 21天教你学会C++