package xml;
import java.util.HashMap;
/**
* 测试Dom4jReadExmple解析的情况
*
* @author cuiweibing
* @since 2007.8.10
*/
public class TestDom4jReadExmple
{
public static void main(String[] args)
{
try
{
// 获取解析完后的解析信息
HashMap<String, String> hashMap;
Dom4jReadExmple drb = new Dom4jReadExmple();
// 遍历整个XML文件
hashMap = new HashMap<String, String>();
drb.iterateWholeXML("E:/student.xml", hashMap);
System.out.println("姓名\t年龄\t学院\t学院领导\t电话\t\t备注");
for (int i = 0; i < hashMap.size(); i += 6)
{
int j = i / 6;
System.out.print(hashMap.get("name" + j) + "\t");
System.out.print(hashMap.get("student-age" + j) + "\t");
System.out.print(hashMap.get("college" + j) + "\t");
System.out.print(hashMap.get("college-leader" + j) + "\t");
System.out.print(hashMap.get("telephone" + j) + "\t");
System.out.println(hashMap.get("notes" + j) + "\t");
}
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
}
=========低调的分割线====================
package xml;
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 cuiweibing
* @since 2007.8.10
*/
public class Dom4jReadExmple
{
/**
* 遍历整个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++;
// 获取person节点的age属性的值
Attribute ageAttr = element.attribute("age");
if (ageAttr != null)
{
String age = ageAttr.getValue();
if (age != null && !age.equals(""))
{
hm.put(element.getName() + "-" + ageAttr.getName() + num, age);
}
else
{
hm.put(element.getName() + "-" + ageAttr.getName() + num, "20");
}
}
else
{
hm.put(element.getName() + "-age" + num, "20");
}
// 遍历student结点的所有孩子节点(即name,college,telphone,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();
}
}
}
分享到:
相关推荐
### XML解析技术DOM4J解析 #### DOM4J解析概览 DOM4J是一种高性能、功能强大且极其易于使用的Java XML API,它最初是作为JDOM的一个智能分支发展起来的,自2000年下半年开始持续开发。DOM4J不仅在功能上超越了基本...
DOM4J是一个由dom4j.org开发的开源XML解析包,专为Java平台设计,它不仅支持DOM、SAX和JAXP标准,还巧妙地融入了Java集合框架,使其成为Java开发者在处理XML数据时的强大工具。DOM4J的最大亮点在于其简洁易用的API...
6. **StAX(Streaming API for XML)支持**:DOM4J也支持StAX解析器,这种解析方式结合了SAX的高效和DOM的易用性,可以在处理大型XML文件时节省内存。 7. **与JAXB集成**:DOM4J可以与Java Architecture for XML ...
**DOM4J——XML解析库详解** XML(eXtensible Markup Language)作为一种标记语言,广泛应用于数据交换、配置文件和文档存储等领域。在Java环境中,解析XML文档时,我们通常会遇到各种库,其中DOM4J是一个非常流行...
在本教程中,我们将深入探讨如何使用DOM4J解析(读取)XML节点数据,不受XML层级的限制。 首先,确保你已经下载了必要的依赖,即DOM4J库。通常,这将是一个名为`dom4j-x.x.x.jar`的文件,其中x.x.x是DOM4J的版本号...
四、DOM4J处理循环节点 在处理包含循环节点的XML时,可以使用迭代器或XPath查询来遍历这些节点。例如,遍历所有`<item>`元素: ```java Element root = document.getRootElement(); List<Element> items = root....
本文将深入探讨DOM、DOM4J和SAX三种常用的XML解析方法,并结合具体的实例进行详细讲解。 首先,DOM(Document Object Model)是W3C组织推荐的一种XML解析标准。它将整个XML文档加载到内存中,构建一个树形结构,...
Java解析XML时,dom4j是一个非常流行的库,它提供了灵活且强大的API来处理XML文档。dom4j-1.6.1.jar是这个库的一个版本,发布于2005年,它支持XML的读取、写入、操作以及查询功能。在本文中,我们将深入探讨dom4j的...
5. **事件驱动解析(SAX)**:除了传统的DOM解析外,DOM4J还支持SAX解析器,这种解析方式适用于处理大型XML文件,因为它不需要一次性加载整个文档到内存。 6. **Namespace支持**:DOM4J提供了对XML命名空间的全面...
DOM4J作为XML解析工具,其核心功能包括: 1. **解析XML文档**:DOM4J可以使用SAX或DOM方式解析XML文件。SAX是事件驱动的解析器,适用于大文件,而DOM解析会将整个文档加载到内存,适合小文件。DOM4J的灵活性在于,...
使用 dom4j 解析 XML dom4j 解析 XML dom4j解析xml
**DOM4J库详解** DOM4J是一款强大的Java XML API,它提供了丰富的功能,使得在Java应用程序中处理XML文档变得简单而高效。...结合其轻量级的设计和对XPath的支持,DOM4J成为了Java开发者的首选XML库之一。
常见的 XML 解析器有 DOM、SAX、JDOM 和 DOM4J 等。每种解析器都有其特点和优缺,选择合适的解析器对应用程序的性能和开发效率有很大影响。 1. DOM 解析器 DOM(Document Object Model)是 W3C 官方标准,用于表示...
### DOM4J解析XML知识点详解 #### 一、DOM4J简介 DOM4J是一个Java库,用于处理XML文档。它的设计目标是为了提供一个简单、易于使用的API来处理XML文件,同时保持性能上的优势。与Java标准库中的DOM实现相比,DOM4J...
总结来说,XML解析在Java开发中扮演着重要角色,dom4j和jdom是两个常用的XML处理库,它们各有特点,提供了丰富的功能来帮助开发者处理XML文档。理解这两个库的差异和优势,以及如何在项目中正确使用它们,对于提升...
1、xml文档解析 2、 dom4j解析xml 3、实现xml文件解析 xml字符串解析 xml MAP键值对解析 4、实现xml写入与生成文件
DOM4J是dom4j.org出品的一个开源XML解析包,它的网站中这样定义: Dom4j is an easy to use, open source library for working with XML, XPath and XSLT on the Java platform using the Java Collections ...