xml/students.xml
<?xml version="1.0" encoding="UTF-8"?>
<students>
<student sn="1">
<name>张三</name>
<age>18</age>
<college leader="one">TingHua University</college>
<telephone>01011111111</telephone>
<notes>Best students!</notes>
</student>
<student sn="2">
<name>李四</name>
<age>20</age>
<college leader="two">BeiJing University</college>
<telephone>01022222222</telephone>
<notes>Better students!</notes>
</student>
<student>
<name>王五</name>
<age>22</age>
<college>JiaLiDun University</college>
<telephone>01033333333</telephone>
<notes>Bad students!</notes>
</student>
</students>
1.Dom4jReadExample.java
package com.dom4j;
import java.io.File;
import java.util.HashMap;
import java.util.Iterator;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
/**
* 利用dom4j解析XML
*
* @author Daniel Cheng
*/
public class Dom4jReadExample {
/**
* 遍历整个XML文件,获取所有节点的值与其属性的值,并放入HashMap中
*
* @param filename
* String 待遍历的XML文件(相对路径或者绝对路径)
* @param hm
* HashMap
* 存放遍历结果,格式:<nodename,nodevalue>或者<nodename+attrname,attrvalue>
*/
public void iterateWholeXML(String filename, HashMap<String, String> hm) {
SAXReader saxReader = new SAXReader();
try {
Document document = saxReader.read(new File(filename));
Element root = document.getRootElement();
// 用于记录学生编号的变量
int num = -1;
// 遍历根结点(students)的所有孩子节点(student节点)
for (Iterator<?> iter = root.elementIterator(); iter.hasNext();) {
Element element = (Element) iter.next();
num++;
// 获取student节点的sn编号属性的值
Attribute snAttr = element.attribute("sn");
if (snAttr != null) {
String sn = snAttr.getValue();
if (sn != null && !sn.equals("")) {
hm.put(element.getName() + "-" + snAttr.getName()
+ num, sn);
} else {
hm.put(element.getName() + "-" + snAttr.getName()
+ num, ""+(num+1));
}
} else {
hm.put(element.getName() + "-sn" + num,""+(num+1));
}
// 遍历student结点的所有孩子节点(即name,college,telephone,notes),并进行处理
for (Iterator<?> iterInner = element.elementIterator(); iterInner
.hasNext();) {
Element elementInner = (Element) iterInner.next();
if (elementInner.getName().equals("college")) {
hm.put(elementInner.getName() + num, elementInner
.getText());
// 获取college节点的leader属性的值
Attribute leaderAttr = elementInner.attribute("leader");
if (leaderAttr != null) {
String leader = leaderAttr.getValue();
if (leader != null && !leader.equals("")) {
hm.put(elementInner.getName() + "-"
+ leaderAttr.getName() + num, leader);
} else {
hm.put(elementInner.getName() + "-"
+ leaderAttr.getName() + num, "leader");
}
} else {
hm.put(elementInner.getName() + "-leader" + num,
"leader");
}
} else {
hm.put(elementInner.getName() + num, elementInner
.getText());
}
}
}
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[]args){
HashMap<String, String> hm=new HashMap<String, String>();
new Dom4jReadExample().iterateWholeXML("xml/students.xml",hm);
System.out.println(hm.size());
System.out.println(hm.toString());
}
}
2.Dom4jXML.java
/*用dom4j生成xml*/
package com.dom4j;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
public class Dom4jXML {
/**
* 利用dom4j生成XML
*
* @author Daniel Cheng
*/
public void createXML() {
//用工厂类创建一个document实例
Document doc = DocumentHelper.createDocument();
//创建根元素emps
Element rootEle = doc.addElement("emps");
//添加注释
rootEle.addComment("这是一个dom4j生成的xml文件");
//emps根节点下创建一个emp节点
Element empEle = rootEle.addElement("emp");
//emp添加属性id="1"
empEle.addAttribute("id", "1");
//emp节点下创建一个name节点
Element nameEle = empEle.addElement("name");
//name节点下创建一个文本节点zhangsan
nameEle.setText("Daniel Cheng");
//再为name节点创建一个兄弟节点
Element sexEle = empEle.addElement("sex");
sexEle.setText("man");
//将document中的内容写入文件中
try {
Writer out = new FileWriter("xml/emps.xml");
//格式化输出,类型IE浏览一样
OutputFormat format = OutputFormat.createPrettyPrint();
//OutputFormat format = OutputFormat.createCompactFormat();
format.setEncoding("UTF-8");
//创建写出对象
XMLWriter writer = new XMLWriter(out,format);
writer.write(doc);
writer.close();
System.out.println("生成emps.xml成功。");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("失败了。");
}
}
public static void main(String[] args) {
new Dom4jXML().createXML();
}
}
xml/emps.xml文档内容
<?xml version="1.0" encoding="UTF-8"?>
<emps>
<!--这是一个dom4j生成的xml文件-->
<emp id="1">
<name>Daniel Cheng</name>
<sex>man</sex>
</emp>
</emps>
分享到:
- 2009-11-08 01:02
- 浏览 3412
- 评论(0)
- 论坛回复 / 浏览 (0 / 3505)
- 查看更多
相关推荐
本文将详细介绍生成和解析XML的四种主要方法:DOM、DOM4J、SAX和JDOM。 1. DOM(Document Object Model) DOM是W3C组织推荐的一种解析XML的标准方式。它将XML文档视为一个树形结构,每个节点代表XML文档的一部分。...
5. **文档构建**:通过DOM4J,可以动态构建XML文档,这对于动态生成XML数据非常有用。 6. **Java集合框架集成**:DOM4J的元素和属性都可以视为Java集合,可以使用Java的迭代器和集合方法进行操作,这大大增强了其可...
- `books.xml`、`sql.xml`、`data.xml`、`xml002.xml`和`xml003.xml`这些文件很可能是包含不同结构的XML文档,用于演示DOM4J如何解析XML内容。例如,`books.xml`可能是一个图书目录,包含书名、作者等信息。DOM4J...
本教程“DOM解析XML应用实例(入门经典案例)”旨在帮助初学者快速掌握DOM解析XML的基本方法和实践技巧。 XML(Extensible Markup Language)是一种标记语言,常用于存储和传输数据,特别是在Web应用程序中。它具有...
- **解析XML**:使用DOM4J提供的`DocumentFactory`创建`Document`对象,然后用`SAXReader`读取XML文件。 - **操作XML**:利用`Element`、`Attribute`等类,可以查找、修改或添加XML元素和属性。XPath查询可通过`...
总结,dom4j是一个强大且灵活的XML处理库,提供了丰富的API来读取、操作和生成XML文档。通过利用XPath的支持,可以高效地定位和提取XML数据,极大地简化了XML编程。在实际开发中,根据项目需求选择合适的解析器...
这个版本的DOM4J提供了一系列API,使得开发者能够方便地读取、写入、修改以及解析XML文件。下面我们将深入探讨DOM4J的核心功能和使用方法。 XML(eXtensible Markup Language)是一种标记语言,广泛用于数据交换、...
DOM4j是一种用于处理XML的Java API,其设计目的是提供一个高效、功能丰富且易于使用的API。DOM4j是一个开源项目,可以在SourceForge等开源平台上获取到。DOM4j不仅在性能上表现出色,在功能性和易用性方面也得到了...
**四、DOM4J与SAX和DOM的比较** 1. **DOM4J vs DOM**:DOM4J比DOM更轻量级,内存占用小,且提供了更丰富的API。 2. **DOM4J vs SAX**:DOM4J结合了SAX的事件驱动和DOM的便利性,可以在内存中保留整个文档结构,同时...
- 加载XML文档:使用`javax.xml.parsers.DocumentBuilderFactory`和`DocumentBuilder`解析XML文件,得到`Document`对象。 - 创建Java对象:使用XMLBean生成的类,通过构造函数实例化对象。 - 将XML数据绑定到Java...
1. 使用DOM解析: - 引入`javax.xml.parsers`包下的`DocumentBuilderFactory`和`DocumentBuilder`类,创建解析器实例,然后调用`parse()`方法加载XML文件。 - 解析后的XML文档可以通过`Document`对象进行遍历,如`...
1. **XML文档的创建**:如何使用C#动态生成XML文档,包括添加元素、属性和文本内容。 2. **XML的加载和解析**:通过XmlReader、XmlTextReader或XDocument等类加载XML文件,然后解析成内存中的对象结构。 3. **XML...
3. **XML与dom4j**:深入学习XML语法,掌握dom4j的基本用法,包括创建、读取和修改XML文档,以及使用XPath进行查询。 4. **实战项目**:通过实际项目练习,将Web开发与dom4j结合,如构建一个处理XML请求和响应的简单...
根据提供的信息,我们可以详细地解析每个章节所涉及的知识点,并为初学者提供一个全面的XML入门指南。 ### 第一章:在学习XML之前你应该掌握什么 在深入学习XML之前,了解以下基础知识对于理解XML的概念及其应用至...
下面我们将深入探讨XML的基本概念、XML文档结构、解析和生成XML的方法,以及易语言中的XML支持库。 1. XML基本概念: - XML是一种可扩展的标记语言,与HTML类似,但更加灵活和规范。 - XML的目的是传输和存储数据...
9. **DOM和JDOM**:在Java编程中,DOM4J和JDOM是常用的XML处理库,它们提供了操作XML文档的API,简化了XML的解析和生成。 10. **XML与数据库**:XML也可以作为数据库中的数据格式,如XML数据库,提供了一种非结构化...
2. **微型数据库**:XML可作为轻量级的数据库,使用DOM(Document Object Model)等API进行数据的读写和查询,常见于小型应用程序或留言板系统。 3. **通信数据**:在Web服务中,XML作为数据交换格式,使得不同系统...
XML的结构清晰,易于机器解析和生成,也适合人工阅读。 XML的基础概念: 1. **元素(Element)**:XML文档的核心组成部分,用于定义数据结构。每个元素由起始标签和结束标签组成,如`<element>`和`</element>`,...