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是一个强大的Java库,专门用于处理XML文档。它提供了简单而直观的方式来解析、创建、修改和操作XML数据。在本教程中,我们将深入探讨如何使用DOM4J解析(读取)XML节点数据,不受XML层级的限制。 首先,确保你...
### DOM4J解析XML详解 #### 一、DOM4J简介与特性 DOM4J是一个由dom4j.org开发的开源XML解析包,专为Java平台设计,它不仅支持DOM、SAX和JAXP标准,还巧妙地融入了Java集合框架,使其成为Java开发者在处理XML数据时...
通过学习和实践这些知识,你可以熟练地利用dom4j处理XML文档,无论是简单的数据交换还是复杂的配置文件管理,都能游刃有余。在实际项目中,结合具体需求,灵活运用这些技术,可以大大提高工作效率。
"dom4j-jar与dom4j解析xml文档介绍" 这个标题告诉我们,我们将探讨的是一个关于dom4j库的jar文件,以及如何使用这个库来解析XML文档。dom4j是一个Java库,它提供了丰富的API用于处理XML、HTML和DOM文档。这里的"jar...
DOM4J是一个强大的Java库,专门用于解析XML文档。它提供了简单易用的API,使得开发者可以更加方便地处理XML数据。DOM4J的核心优势在于它的面向接口编程设计,这使得它能够在不同的解析机制间灵活切换,如DOM、SAX和...
Java提供了多种解析XML的API,包括SAX(Simple API for XML)、DOM(Document Object Model)以及DOM4J。下面我们将详细探讨这些解析方式及其在实际开发中的应用。 1. SAX解析器: SAX是一种基于事件驱动的解析器,...
**DOM4J解析XML** DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了灵活、高效且功能丰富的API,使得XML的读取、创建、修改和查询变得简单易行。DOM4J的主要特点包括对XPath的支持、事件驱动的解析、以及与...
Java DOM4J解析XML是一种常见的处理XML文档的技术,它提供了灵活且高效的API,使得开发者能够方便地读取、写入、修改以及操作XML文件。DOM4J是Java中一个非常强大的XML处理库,它结合了DOM、SAX和JDOM的优点,同时也...
DOM4J提供了方便的方法来遍历XML文档中的元素和属性: ```java List<Element> elementList = rootElement.elements(); for (Element element : elementList) { System.out.println(element.getName()); ...
DOM4J作为解析XML的库,遵循DOM(Document Object Model)模型,通过构建一棵节点树来表示XML文档的结构。 在`ParseMQ.java`文件中,通常会包含以下步骤: 1. 引入DOM4J库:导入必要的DOM4J库,如`org.dom4j....
- 动态构建XML:DOM4J可以方便地动态构建和修改XML文档,无需手动处理复杂的DOM节点。 2. DOM4J解析XML步骤: - 引入DOM4J库:在项目中引入DOM4J相关的jar包。 - 加载XML:使用`DocumentFactory`创建`Document`...
DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了简单且高效的API来读取、写入、修改以及操作XML。在这个实例中,我们将深入理解DOM4J库如何帮助我们处理XML文档,并通过实际操作来熟悉其核心功能。 XML...
DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了简单且灵活的API,使得XML解析、创建、修改和查询变得容易。在这个实例中,我们将深入探讨如何使用DOM4J解析XML文件,并通过`Dom4jTest1.java`这个示例程序...
**标题:** Dom4j 解析Xml文档及 XPath查询 学习笔记 **正文:** XML(eXtensible Markup Language)是一种标记语言,常用于数据交换、配置存储以及文档结构化表示。在Java世界中,解析XML文档有多种库,其中Dom4j是...
DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了灵活且高效的API,使得XML的解析、创建、修改和查询变得简单。在本示例中,我们将深入探讨如何使用DOM4J解析XML文件,以`CacheInit.java`作为我们的核心代码...
使用DOM解析XML的基本步骤如下: 1. 创建DocumentBuilderFactory实例。 2. 使用DocumentBuilderFactory创建DocumentBuilder实例。 3. 使用DocumentBuilder的parse()方法解析XML文件,得到Document对象。 4. 通过...
DOM4J-1.6.1是该库的一个版本,包含了对XML文档的各种操作功能,如读取、写入、修改、遍历和搜索等。这个版本可能包含了一些特定的改进和修复,以提高性能和兼容性。 在DOM4J中解析XML时,常常需要配合XPath...
解析XML时,DOM4J首先读取XML文件并构建一个节点结构,然后你可以通过API遍历和修改这个结构。例如,你可以通过Element、Attribute、Text等类来访问和修改元素、属性和文本内容。 2. **基本用法**:在Java程序中,...