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文件,以`CacheInit.java`作为我们的核心代码示例,并参考`emailTemplateConfig.xml`作为实际操作的对象。 首先,让我们了解XML(eXtensible Markup Language)。...
至于`读写XML示例`,这个文件可能包含了一些实际的Java代码示例,演示了如何使用DOM4J进行XML操作。通过阅读和理解这些示例,你可以更好地掌握DOM4J的使用方法。 总之,DOM4J是一个强大且易于使用的工具,对于处理...
综上所述,DOM解析XML是Android开发中处理XML数据的一种常见方法,尤其适用于小规模数据。通过理解DOM解析的基本步骤和注意事项,开发者可以有效地读取、解析并利用XML文件中的信息。在实际项目中,根据具体需求和...
在本示例中,我们将探讨如何利用DOM4J来读取和解析XML文件,以及如何通过`XMLTest.java`这个示例来理解DOM4J的基本用法。 首先,`XMLTest.java`是一个包含DOM4J操作XML的代码实例。通常,这样的程序会包含以下步骤...
Java DOM4J解析XML是一种常见的处理XML文档的技术,它提供了灵活且高效的API,使得...通过理解上述DOM4J解析XML的基本概念、操作和示例,开发者可以有效地在Java项目中处理XML数据,无论是读取、创建还是修改XML文件。
1. **解析XML文档**:DOM4J可以使用SAX或DOM方式解析XML文件。SAX是事件驱动的解析器,适用于大文件,而DOM解析会将整个文档加载到内存,适合小文件。DOM4J的灵活性在于,可以根据需求选择合适的解析策略。 2. **...
DOM4J不仅是一个解析XML的工具,还可以用作XML数据绑定库,将XML数据映射到Java对象。此外,DOM4J还支持Java 5的注解,这使得XML文档的处理更加直观和简洁。结合其灵活性和高性能,DOM4J成为Java开发人员处理XML文档...
**DOM4J解析XML数据** DOM4J是一个强大的Java库,专门用于处理XML文档,它提供了灵活且高效的方式来解析、创建、修改XML内容。在Java世界中,XML处理有多种方式,如DOM、SAX、StAX等,而DOM4J因其易用性和功能丰富...
标题“java_dom解析xml xml java”表明了本文档的主题是关于如何使用Java中的DOM技术来解析XML文件。 #### 描述分析 描述中提到这是一个适合新手入门的内容,并给出了一个简单的XML示例。该XML文档包含了一个`...
通过学习和实践这些基本操作,你可以熟练掌握DOM4J解析XML的技巧,为你的Java项目中处理XML数据提供强大的支持。在项目中遇到具体问题时,可以参考DOM4J的官方文档,或利用在线资源进行更深入的学习。
在提供的文件列表中,`Test.java`可能包含使用DOM4J解析XML的示例代码。通常,这样的代码会包含以下部分: ```java import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; // ...
这些文件可能包含了完整的示例代码,演示了如何用DOM4J解析XML文件并进行基本的操作,如查找、修改和创建XML元素。 DOM4J的优点包括易于使用、功能强大且性能良好。然而,由于DOM解析方式会一次性加载整个XML文档到...
标题中的"DOM_XML.rar"可能是一个包含DOM解析XML相关示例的压缩文件,"DOM_dom xml_dom xml java_dom解析xml_java解析xml"这部分描述了文件的主要内容,即关于DOM(Document Object Model)在XML解析中的应用,特别...
在压缩包文件"复件 dom"中,可能包含了示例代码或教程,用于演示如何使用DOM4J和本地DOM解析XML文件。通过查看这些文件,你可以更深入地了解两种方法的具体实现,并在实际项目中选择合适的方式处理XML数据。 总结来...
在这个实例中,我们将深入探讨如何使用DOM4J解析XML文件,并通过`Dom4jTest1.java`这个示例程序来理解其工作原理。 首先,我们需要了解XML(Extensible Markup Language)是一种标记语言,常用于存储和传输数据。...
在提供的视频资源"17-dom4j解析xml文档(增删改查).avi"中,可能详细展示了这些操作的步骤和示例,观看该视频将进一步加深你对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是一种常见且直观的方式,适合处理小规模的数据。结合ButterKnife库,可以方便地将解析结果与UI组件进行绑定,提高代码的可读性和维护性。但请注意,对于大文件,考虑使用SAX或者...