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

利用dom4j解析xml文档,自动遍历节点属性

阅读更多
package st.xml.utils;

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 org.dom4j.tree.DefaultAttribute;  
 
/** 
* Java递归遍历XML所有元素 
*  
* @author  Administrator 
* @version  [版本号, Apr 13, 2010] 
* @see  [相关类/方法] 
* @since  [产品/模块版本] 
*/ 
public class XmlParser  
{  
    // private static Map xmlmap = new HashMap();   
    //存储xml元素信息的容器   
    private static ArrayList<Leaf> elemList = new ArrayList<Leaf>();  
      
    public static void main(String args[])  
        throws DocumentException  
    {  
        XmlParser test = new XmlParser();  
        String path = "D:\\dom4jtest.xml";  
        // 读取XML文件  
        SAXReader reader = new SAXReader();  
        Document doc = reader.read(path);  
        // 获取XML根元素  
        Element root = doc.getRootElement();  
        test.getElementList(root);  
        String x = test.getListString(elemList);  
        System.out.println("-----------解析结果------------\n" + x);  
    }  
      
    /**  
     * 获取节点所有属性值 
     * <功能详细描述> 
     * @param element 
     * @return 
     * @see [类、类#方法、类#成员] 
     */ 
    public String getNoteAttribute(Element element)  
    {  
        String xattribute = "";  
        DefaultAttribute e = null;  
        List list = element.attributes();  
        for (int i = 0; i < list.size(); i++)  
        {  
            e = (DefaultAttribute)list.get(i);  
            //System.out.println("name = " + e.getName() + ", value = " + e.getText());  
            xattribute += " [name = " + e.getName() + ", value = " + e.getText() + "]";  
        }  
        return xattribute;  
    }  
      
    /**  
     * 递归遍历方法  
     * <功能详细描述> 
     * @param element 
     * @see [类、类#方法、类#成员] 
     */ 
    public void getElementList(Element element)  
    {  
        List elements = element.elements();  
        // 没有子元素   
        if (elements.isEmpty())  
        {  
            String xpath = element.getPath();  
            String value = element.getTextTrim();  
            elemList.add(new Leaf(getNoteAttribute(element), xpath, value));  
        }  
        else 
        {  
            // 有子元素  
            Iterator it = elements.iterator();  
            while (it.hasNext())  
            {  
                Element elem = (Element)it.next();  
                // 递归遍历   
                getElementList(elem);  
            }  
        }  
    }  
      
    public String getListString(List elemList)  
    {  
        StringBuffer sb = new StringBuffer();  
        for (Iterator it = elemList.iterator(); it.hasNext();)  
        {  
            Leaf leaf = (Leaf)it.next();  
            sb.append("xpath: " + leaf.getXpath()).append(", value: ").append(leaf.getValue());  
            if (!"".equals(leaf.getXattribute()))  
            {  
                sb.append(", Attribute: ").append(leaf.getXattribute());  
            }  
            sb.append("\n");  
        }  
        return sb.toString();  
    }  
}  
 
/**  
* xml节点数据结构  
*/ 
class Leaf  
{  
    // 节点属性  
    private String xattribute;  
      
    // 节点PATH  
    private String xpath;  
      
    // 节点值  
    private String value;  
      
    public Leaf(String xattribute, String xpath, String value)  
    {  
        this.xattribute = xattribute;  
        this.xpath = xpath;  
        this.value = value;  
    }  
      
    public String getXpath()  
    {  
        return xpath;  
    }  
      
    public void setXpath(String xpath)  
    {  
        this.xpath = xpath;  
    }  
      
    public String getValue()  
    {  
        return value;  
    }  
      
    public void setValue(String value)  
    {  
        this.value = value;  
    }  
      
    public String getXattribute()  
    {  
        return xattribute;  
    }  
      
    public void setXattribute(String xattribute)  
    {  
        this.xattribute = xattribute;  
    }  
}
//注明:本代码是从其他bolg转载来的
分享到:
评论

相关推荐

    dom4j 解析(读取) xml 节点数据

    DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了简单而直观的方式来解析、创建、修改和操作XML数据。在本教程中,我们将深入探讨如何使用DOM4J解析(读取)XML节点数据,不受XML层级的限制。 首先,确保你...

    dom4j解析xml详解

    ### DOM4J解析XML详解 #### 一、DOM4J简介与特性 DOM4J是一个由dom4j.org开发的开源XML解析包,专为Java平台设计,它不仅支持DOM、SAX和JAXP标准,还巧妙地融入了Java集合框架,使其成为Java开发者在处理XML数据时...

    利用 dom4j 解析 xml 文档

    通过学习和实践这些知识,你可以熟练地利用dom4j处理XML文档,无论是简单的数据交换还是复杂的配置文件管理,都能游刃有余。在实际项目中,结合具体需求,灵活运用这些技术,可以大大提高工作效率。

    dom4j-jar与dom4j解析xml文档介绍

    "dom4j-jar与dom4j解析xml文档介绍" 这个标题告诉我们,我们将探讨的是一个关于dom4j库的jar文件,以及如何使用这个库来解析XML文档。dom4j是一个Java库,它提供了丰富的API用于处理XML、HTML和DOM文档。这里的"jar...

    dom4j解析XML文档.ppt

    DOM4J是一个强大的Java库,专门用于解析XML文档。它提供了简单易用的API,使得开发者可以更加方便地处理XML数据。DOM4J的核心优势在于它的面向接口编程设计,这使得它能够在不同的解析机制间灵活切换,如DOM、SAX和...

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

    Java提供了多种解析XML的API,包括SAX(Simple API for XML)、DOM(Document Object Model)以及DOM4J。下面我们将详细探讨这些解析方式及其在实际开发中的应用。 1. SAX解析器: SAX是一种基于事件驱动的解析器,...

    DOM4J 解析XML

    **DOM4J解析XML** DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了灵活、高效且功能丰富的API,使得XML的读取、创建、修改和查询变得简单易行。DOM4J的主要特点包括对XPath的支持、事件驱动的解析、以及与...

    java dom4j解析xml

    Java DOM4J解析XML是一种常见的处理XML文档的技术,它提供了灵活且高效的API,使得开发者能够方便地读取、写入、修改以及操作XML文件。DOM4J是Java中一个非常强大的XML处理库,它结合了DOM、SAX和JDOM的优点,同时也...

    dom4j解析xml实例

    DOM4J提供了方便的方法来遍历XML文档中的元素和属性: ```java List&lt;Element&gt; elementList = rootElement.elements(); for (Element element : elementList) { System.out.println(element.getName()); ...

    dom4j解析xml,利用反射机制

    DOM4J作为解析XML的库,遵循DOM(Document Object Model)模型,通过构建一棵节点树来表示XML文档的结构。 在`ParseMQ.java`文件中,通常会包含以下步骤: 1. 引入DOM4J库:导入必要的DOM4J库,如`org.dom4j....

    DOM与DOM4J解析XML文档的详细讲解

    - 动态构建XML:DOM4J可以方便地动态构建和修改XML文档,无需手动处理复杂的DOM节点。 2. DOM4J解析XML步骤: - 引入DOM4J库:在项目中引入DOM4J相关的jar包。 - 加载XML:使用`DocumentFactory`创建`Document`...

    dom4j读写xml文档实例

    DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了简单且高效的API来读取、写入、修改以及操作XML。在这个实例中,我们将深入理解DOM4J库如何帮助我们处理XML文档,并通过实际操作来熟悉其核心功能。 XML...

    dom4j 解析xml实例

    DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了简单且灵活的API,使得XML解析、创建、修改和查询变得容易。在这个实例中,我们将深入探讨如何使用DOM4J解析XML文件,并通过`Dom4jTest1.java`这个示例程序...

    Dom4j 解析Xml文档及 XPath查询 学习笔记

    **标题:** Dom4j 解析Xml文档及 XPath查询 学习笔记 **正文:** XML(eXtensible Markup Language)是一种标记语言,常用于数据交换、配置存储以及文档结构化表示。在Java世界中,解析XML文档有多种库,其中Dom4j是...

    dom4j解析xml文件代码示例

    DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了灵活且高效的API,使得XML的解析、创建、修改和查询变得简单。在本示例中,我们将深入探讨如何使用DOM4J解析XML文件,以`CacheInit.java`作为我们的核心代码...

    分别使用DOM和DOM4j解析XML文件

    使用DOM解析XML的基本步骤如下: 1. 创建DocumentBuilderFactory实例。 2. 使用DocumentBuilderFactory创建DocumentBuilder实例。 3. 使用DocumentBuilder的parse()方法解析XML文件,得到Document对象。 4. 通过...

    dom4j解析XML所需要的jar包

    DOM4J-1.6.1是该库的一个版本,包含了对XML文档的各种操作功能,如读取、写入、修改、遍历和搜索等。这个版本可能包含了一些特定的改进和修复,以提高性能和兼容性。 在DOM4J中解析XML时,常常需要配合XPath...

    java dom4j 解析xml的例子,可用

    解析XML时,DOM4J首先读取XML文件并构建一个节点结构,然后你可以通过API遍历和修改这个结构。例如,你可以通过Element、Attribute、Text等类来访问和修改元素、属性和文本内容。 2. **基本用法**:在Java程序中,...

Global site tag (gtag.js) - Google Analytics