`
caleb_520
  • 浏览: 251273 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

通过开源dom4j,递归解析xml文件

    博客分类:
  • XML
阅读更多


package com.gxa.jdk5.example1;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.Attribute;
import org.dom4j.io.SAXReader;

import java.io.File;
import java.util.Iterator;
import java.util.List;

public class Dom4j_2 {
	
	public Document readXML() {
		Document document = null;
		SAXReader saxReader = new SAXReader();
		try {
			document = saxReader.read(new File("D:/workspace/XML/chapter_08.xml"));
		} catch (DocumentException e) {
			e.printStackTrace();
		}
		return document;
	}
	
	public void disXML_3(Element element) {
		Iterator iterator = element.elementIterator();
		List list = null;
		while (iterator.hasNext()) {
			Element node = (Element) iterator.next();
			list = node.elements();
			if (list != null && list.size() > 0) {
				System.out.print(node.getName());
				int count = node.attributeCount();
				for (int i = 0; i < count; i++) {
					Attribute attr = node.attribute(i);
					System.out.println("*****" + attr.getName() + " " + attr.getText());
				}
				disXML_3(node);
			} else {
				System.out.println(node.getName() + " " + node.getText());
			}
		}
	}
	
	public void getRoot(Document document) {
		Element root = document.getRootElement();
		disXML_3(root);
	}
	
	
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Dom4j_2 d = new Dom4j_2();
		d.getRoot(d.readXML());
	}

}
  • 大小: 23.3 KB
分享到:
评论
3 楼 shanxmxj 2011-01-07  
这个递归是没有问题 运行现在的这个xml文件是可以的 
但是如果第二层下还有子节点的话 
list = node.elements();  这里的list 就取不到值
改成list = node.attributes();
这个就可以了
2 楼 caleb_520 2009-10-30  
394580844 写道
递归好像有问题吧
不知道你运行过没

这个测试时通过的,主要是看看你的xml文件中的内容格式。
1 楼 394580844 2009-10-17  
递归好像有问题吧
不知道你运行过没

相关推荐

    Dom4j遍历解析XML

    Dom4j(Document Object Model for Java)是一个Java语言的开源XML API,它提供了非常便捷的方式来解析、创建以及操作XML文档。相较于其他XML解析库如SAX、JDOM等,Dom4j具有更强大的功能与更好的性能。 为了使用...

    dom4j xml解析

    1. 解析XML:DOM4J可以读取XML文件,将其转换为Document对象,然后通过节点操作来访问和修改XML内容。 2. 创建XML:DOM4J提供方便的方法来创建新的XML文档,或者在现有文档中添加、删除和修改元素、属性等。 3. ...

    Dom4J解析XML

    1. **Dom4J介绍**:Dom4J是一个开源的Java XML API,它提供了一种灵活的方式来处理XML文档,包括解析、创建、更新和序列化XML。 2. **XML解析过程**:使用Dom4J解析XML,首先需要创建一个`SAXReader`实例,然后调用...

    Dom4j解析XML实现功能树

    **标题解析:** "Dom4j解析XML实现功能树" 这个标题表明我们要讨论的是如何使用Dom4j这个Java库来解析XML文档,并构建一个功能性的层次结构,即“功能树”。通常,这种树状结构可以用于表示应用程序的菜单、权限结构...

    dom4j--java框架技术

    - Spring框架:DOM4J是Spring配置文件解析的默认选择,允许灵活的配置bean和依赖注入。 - Hibernate框架:在映射XML文件中,DOM4J用于定义ORM映射,帮助处理数据库对象与Java类之间的关系。 6. **性能优化** - ...

    java操纵xml文件的读写,并根据xml生成树型菜单

    4. **JDOM**: 一个开源的Java库,用于简化XML文档的操作,提供了一种介于DOM和SAX之间的中间解决方案。 5. **树型菜单**: 一种常见的UI设计模式,用于展示具有层级关系的数据。 #### 三、代码分析与知识点详解 ####...

    Dom4j带doc帮助文档

    4. **树形结构**:Dom4j提供了一种树形结构来表示XML文档,允许开发者通过递归遍历或节点操作来处理XML结构。 5. **集合接口**:所有的Dom4j元素和属性都实现了Java集合接口,使得它们可以轻松地与Java集合框架集成...

    XMLParser(XML解析代码 C++版)

    2. **遍历DOM树**:解析后的XML文档被表示为一系列的元素(Element)、属性(Attribute)、文本(Text)等节点,可以使用迭代器或递归函数遍历整个树结构。 3. **查询元素**:可以通过元素名、属性值等方式查找特定...

    DOM4jAPI文档

    DOM4j是一个流行的Java库,专门用于处理XML文档...总之,DOM4j是一个强大且易用的XML处理库,通过掌握其API,开发者可以高效地进行XML文档的解析、创建和操作。配合提供的学习资料,可以逐步提升在XML处理领域的技能。

    mysql.rar ,dom4j

    例如,你可以使用DOM4j的Element类来代表XML的元素节点,通过XPath表达式查找特定的元素,或者通过SAXReader和XMLWriter进行读写操作。 以下是一些使用DOM4j解析XML的基本步骤: 1. 引入DOM4j库:在Java项目中,你...

    jdom4j解析xml

    标题与描述概述的知识点主要集中在使用jdom4j库解析并生成XML文件的过程,特别是针对组织结构树的生成。下面将详细阐述此过程中的关键步骤和技术细节。 ### jdom4j解析XML实例详解 #### 生成XML文档 在示例代码中...

    用dom4j实现openfire式导航菜单

    在本文中,作者可能讲解了如何利用DOM4J解析XML文件,因为导航菜单的数据结构通常可以以XML的形式存储。XML文件可以定义菜单的层次结构,每个菜单项可能包含子菜单项。DOM4J通过创建Document对象,Element表示XML...

    xml的四种解析方法及源代码.pdf

    在Java中,处理XML文档通常有四种主要的解析方法:DOM(文档对象模型)、SAX(简单API对于XML)、JDOM(Java特定的DOM)以及DOM4J。每种解析方法都有自己的特点和适用场景,下面将详细介绍这些解析方法以及提供的...

    php dom 解析类和函数文件封装

    在PHP中,DOM(Document Object Model)是一种标准的解析XML和HTML文档的接口,它允许开发者以树形结构处理文档内容。PHP的DOM扩展提供了一系列的类和函数,用于创建、遍历和修改DOM对象。在给定的“php dom 解析类...

    linux xml解析资源

    使用PugiXML解析XML的基本步骤通常包括加载XML文件、遍历DOM树、查找和修改元素,然后可能进行序列化操作将修改后的DOM保存回文件。以下是一个简单的示例: ```cpp #include "pugixml.hpp" int main() { pugi::...

    java DOM4J 读取XML实例代码

    Java中的DOM4J库是一个非常流行的、开源的Java XML API,它提供了强大的文档对象模型(DOM)处理功能,包括解析、创建和修改XML文档。相对于其他处理XML的库,如JDOM或SAX,DOM4J提供了更简洁的API和更丰富的功能。...

    C++ XML 解析之 TinyXML

    TinyXML 将 XML 文件解析成内存中的 DOM(文档对象模型)结构,允许开发者方便地遍历和操作 XML 树。 DOM 模型是一种将 XML 文档表示为树形结构的方式,其中每个节点代表 XML 文档的一个部分,如元素、属性、文本等...

    C++ XML解析器源码

    4. **遍历DOM树**:解析完成后,可以使用递归或栈的方式来遍历DOM树,访问每个节点并执行相应的操作,如读取属性值、提取元素内容等。 5. **写XML**:若需要生成XML文件,解析器还需要支持XML的序列化。这涉及到...

    cocos2d-x XML解析

    RapidXML采用递归下降解析器,不构建完整的DOM树,而是以SAX(Simple API for XML)风格处理XML,即事件驱动的方式。这使得它在处理大型XML文件时更具优势。通过使用`rapidxml::xml_document&lt;&gt;`、`rapidxml::xml_...

    tiny xml2.5.3源码

    4. **XML文档的写入**:Tiny XML不仅可以解析XML,还可以将DOM树写回XML文件。`TiXmlPrinter`类提供了这个功能,可以将整个DOM结构输出为一个XML字符串或直接写入文件。 5. **错误处理**:Tiny XML提供了简单的错误...

Global site tag (gtag.js) - Google Analytics