`

Dom4解析XML数据示例

阅读更多

menu.xml

<?xml version="1.0" encoding="UTF-8"?>
<menus>
	<menu id="001">
		<name>权限管理</name>
		<children>
			<menu id="001001">
				<name>用户管理</name>
				<children></children>
			</menu>
			<menu id="001002">
				<name>角色管理</name>
				<children></children>
			</menu>
		</children>
	</menu>
	<menu id="002">
		<name>系统管理</name>
		<children></children>
	</menu>
</menus>

 

 

解析

 

package com.service;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

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

import com.model.TreeNode;

/**
 * 业务方法.
 * @author 尔演&Eryan eryanwcp@gmail.com
 * @date 2013-7-15 下午10:24:41 
 * @version 1.0
 */
public class XMLService {

	public static void main(String[] args) {
		new XMLService().readMenuXml();
	}
	
	/**
	 * 读取文件
	 * @return
	 */
	private Document readXML() {  
        Document document = null;  
        SAXReader saxReader = new SAXReader();  
        try {  
            document = saxReader.read(getClass().getClassLoader().getResourceAsStream("menu.xml"));  
        } catch (DocumentException e) {  
            e.printStackTrace();  
        }  
        return document;  
    }  
	
	public void readMenuXml(){
		Document doc = readXML();
		//根元素
		Element root = doc.getRootElement();
		
		List<?> menus = root.elements("menu");
		if (menus.size() == 0) { 
            //没有子元素 
        } else { 
            //有子元素 
            for (Iterator it = menus.iterator(); it.hasNext();) { 
                Element elem = (Element) it.next(); 
                System.out.println("id:"+elem.attributeValue("id")+" name:"+elem.elementText("name"));
                //递归
                getElementList(elem.element("children"));
            } 
        } 
	}
	
	
	/** 
     * 递归遍历方法 
     * 
     * @param element 
     */ 
    public void getElementList(Element element) { 
        List elements = element.elements("menu"); 
        if (elements.size() == 0) { 
            //没有子元素 
        } else { 
            //有子元素 
            for (Iterator it = elements.iterator(); it.hasNext();) { 
                Element elem = (Element) it.next(); 
                System.out.println("id:"+elem.attributeValue("id")+" name:"+elem.elementText("name"));
                //递归遍历 
                getElementList(elem.element("children")); 
            } 
        } 
    } 
	
    /**
     * 模拟数据
     * <br>此处未使用递归
     * @return
     */
    public List<TreeNode> getMenusByTree(){
    	
    	List<TreeNode> rootNodes = new ArrayList<TreeNode>();
    	TreeNode rootNde1 = new TreeNode("001","权限管理");
    	TreeNode rootNde2 = new TreeNode("002","系统管理");
    	
    	List<TreeNode> childs1 = new ArrayList<TreeNode>();
    	TreeNode children1 = new TreeNode("001001", "用户管理");
    	TreeNode children2 = new TreeNode("001002", "角色管理");
    	childs1.add(children1);
    	childs1.add(children2);
    	
    	//设置子节点
    	rootNde1.setChildren(childs1);
    	
    	rootNodes.add(rootNde1);
    	rootNodes.add(rootNde2);
    	
		return rootNodes;
    }
	
}

 输出结果

id:001 name:权限管理
id:001001 name:用户管理
id:001002 name:角色管理
id:002 name:系统管理

 

分享到:
评论

相关推荐

    dom4j解析xml文件代码示例

    在本示例中,我们将深入探讨如何使用DOM4J解析XML文件,以`CacheInit.java`作为我们的核心代码示例,并参考`emailTemplateConfig.xml`作为实际操作的对象。 首先,让我们了解XML(eXtensible Markup Language)。...

    DOM4J解析XML示例及API文档

    至于`读写XML示例`,这个文件可能包含了一些实际的Java代码示例,演示了如何使用DOM4J进行XML操作。通过阅读和理解这些示例,你可以更好地掌握DOM4J的使用方法。 总之,DOM4J是一个强大且易于使用的工具,对于处理...

    Dom方式解析XML

    综上所述,DOM解析XML是Android开发中处理XML数据的一种常见方法,尤其适用于小规模数据。通过理解DOM解析的基本步骤和注意事项,开发者可以有效地读取、解析并利用XML文件中的信息。在实际项目中,根据具体需求和...

    dom4j读取XML,解析XML简单示例

    在本示例中,我们将探讨如何利用DOM4J来读取和解析XML文件,以及如何通过`XMLTest.java`这个示例来理解DOM4J的基本用法。 首先,`XMLTest.java`是一个包含DOM4J操作XML的代码实例。通常,这样的程序会包含以下步骤...

    java dom4j解析xml

    Java DOM4J解析XML是一种常见的处理XML文档的技术,它提供了灵活且高效的API,使得...通过理解上述DOM4J解析XML的基本概念、操作和示例,开发者可以有效地在Java项目中处理XML数据,无论是读取、创建还是修改XML文件。

    DOM4J xml解析工具

    1. **解析XML文档**:DOM4J可以使用SAX或DOM方式解析XML文件。SAX是事件驱动的解析器,适用于大文件,而DOM解析会将整个文档加载到内存,适合小文件。DOM4J的灵活性在于,可以根据需求选择合适的解析策略。 2. **...

    DOM4J 解析XML

    DOM4J不仅是一个解析XML的工具,还可以用作XML数据绑定库,将XML数据映射到Java对象。此外,DOM4J还支持Java 5的注解,这使得XML文档的处理更加直观和简洁。结合其灵活性和高性能,DOM4J成为Java开发人员处理XML文档...

    DOM4J解析XML数据

    **DOM4J解析XML数据** DOM4J是一个强大的Java库,专门用于处理XML文档,它提供了灵活且高效的方式来解析、创建、修改XML内容。在Java世界中,XML处理有多种方式,如DOM、SAX、StAX等,而DOM4J因其易用性和功能丰富...

    java_dom解析xml xml java

    标题“java_dom解析xml xml java”表明了本文档的主题是关于如何使用Java中的DOM技术来解析XML文件。 #### 描述分析 描述中提到这是一个适合新手入门的内容,并给出了一个简单的XML示例。该XML文档包含了一个`...

    dom4j解析xml实例

    通过学习和实践这些基本操作,你可以熟练掌握DOM4J解析XML的技巧,为你的Java项目中处理XML数据提供强大的支持。在项目中遇到具体问题时,可以参考DOM4J的官方文档,或利用在线资源进行更深入的学习。

    dom4j解析xml

    在提供的文件列表中,`Test.java`可能包含使用DOM4J解析XML的示例代码。通常,这样的代码会包含以下部分: ```java import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; // ...

    java中dom4解析xml

    这些文件可能包含了完整的示例代码,演示了如何用DOM4J解析XML文件并进行基本的操作,如查找、修改和创建XML元素。 DOM4J的优点包括易于使用、功能强大且性能良好。然而,由于DOM解析方式会一次性加载整个XML文档到...

    DOM_XML.rar_DOM_dom xml_dom xml java_dom解析xml_java解析xml

    标题中的"DOM_XML.rar"可能是一个包含DOM解析XML相关示例的压缩文件,"DOM_dom xml_dom xml java_dom解析xml_java解析xml"这部分描述了文件的主要内容,即关于DOM(Document Object Model)在XML解析中的应用,特别...

    使用dom4j 和本地dom 解析xml 文件

    在压缩包文件"复件 dom"中,可能包含了示例代码或教程,用于演示如何使用DOM4J和本地DOM解析XML文件。通过查看这些文件,你可以更深入地了解两种方法的具体实现,并在实际项目中选择合适的方式处理XML数据。 总结来...

    dom4j 解析xml实例

    在这个实例中,我们将深入探讨如何使用DOM4J解析XML文件,并通过`Dom4jTest1.java`这个示例程序来理解其工作原理。 首先,我们需要了解XML(Extensible Markup Language)是一种标记语言,常用于存储和传输数据。...

    dom4j解析xml文件(增删改查)

    在提供的视频资源"17-dom4j解析xml文档(增删改查).avi"中,可能详细展示了这些操作的步骤和示例,观看该视频将进一步加深你对DOM4J操作XML的理解。记得实践是检验理论的最好方式,动手操作会让你更好地掌握这些知识...

    Java使用sax、dom、dom4j解析xml文档

    以下是一个DOM4J解析XML的简单示例: ```java import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; public class Dom4jExample { public static void main(String[] args) {...

    Android Dom解析XML

    总结来说,Android中使用DOM解析XML是一种常见且直观的方式,适合处理小规模的数据。结合ButterKnife库,可以方便地将解析结果与UI组件进行绑定,提高代码的可读性和维护性。但请注意,对于大文件,考虑使用SAX或者...

Global site tag (gtag.js) - Google Analytics