`
hdu0704
  • 浏览: 12786 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

java解析xml通用版

 
阅读更多

       平时接触xml比较多,解析的时候通常会涉及到xml的节点值,这样每次都需要写一遍类似的代码,比较繁琐。下面这段程序可以适用于各种xml,通过递归将里面的元素和属性封装成一个Map返回。不过有个比较明显的缺点是当xml里面的元素名或者属性名重复时,后面的会将前面的覆盖掉。

 

import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;

public class XmlUtil {
	/**
	 * 传入一个xml格式的字符串,返回map,适用于无相同的节点时
	 * 
	 * @param xml
	 * @return
	 * @throws DocumentException
	 */
	public static Map<String, String> getNodeData(String xml)
			throws DocumentException {
		Map<String, String> resultMap = new HashMap<String, String>();
		Document doc;
		doc = DocumentHelper.parseText(xml);
		Element elem = doc.getRootElement();
		return getElementList(elem, resultMap);
	}

	/**
	 * 递归遍历方法
	 * 
	 * @param element
	 */
	public static Map<String, String> getElementList(Element element,
			Map<String, String> resultMap) {
		List elements = element.elements();
		if (elements.size() == 0) {
			// 没有子元素
			resultMap.put(element.getName(), element.getTextTrim());
			// 获取属性值
			List arrtList = element.attributes();
			for (int i = 0; i < arrtList.size(); i++) {
				Attribute attr = (Attribute) arrtList.get(i);
				resultMap.put(attr.getName(), attr.getValue().trim());
			}
		} else {
			// 有子元素
			for (Iterator it = elements.iterator(); it.hasNext();) {
				Element elem = (Element) it.next();
				// 递归遍历
				getElementList(elem, resultMap);
			}
		}
		return resultMap;
	}
}

 

分享到:
评论

相关推荐

    JAVA 解析XML生成XML文档实例

    JAVA 解析XML和生成XML文档源码。比较全 1.DOM生成和解析XML文档 2.SAX生成和解析XML文档 3.DOM4J生成和解析XML文档 4.JDOM生成和解析XML

    java xml解析工具类 java xml解析工具类

    java xml解析工具类 java xml解析工具类java xml解析工具类 java xml解析工具类java xml解析工具类 java xml解析工具类java xml解析工具类 java xml解析工具类java xml解析工具类 java xml解析工具类java xml解析...

    java 解析xml 多级

    Java作为一种广泛使用的后端编程语言,提供了多种方式来解析XML文档,使得处理多级嵌套的数据变得可能。本文将详细讲解如何在Java中解析XML,特别是针对多级结构的情况。 首先,Java提供了两种主要的API来处理XML:...

    java在线解析xmljava在线解析xmljava在线解析xmljava在线解析xml

    java在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava...

    java解析xml字符串

    ### Java解析XML字符串 在给定的代码示例中,我们看到了如何使用JDOM库来解析一个XML字符串,并对其进行操作。下面我们将详细解析这个过程: 1. **初始化XML源**:首先,将XML字符串转化为`StringReader`对象,这...

    JAVA 解析xml

    JAVA 解析xml多种方法 JAVA 解析xml多种方法 JAVA 解析xml多种方法 JAVA 解析xml多种方法 JAVA 解析xml多种方法 JAVA 解析xml多种方法 JAVA 解析xml多种方法

    详解Java解析XML的四种方法

    本文将深入探讨Java解析XML的四种主要方法。 1. DOM(Document Object Model)解析: DOM解析器将整个XML文档加载到内存中,创建一个树形结构,允许开发者通过节点遍历和操作XML。例如,Java的`javax.xml.parsers....

    java解析XML文件

    Java解析XML文件是Java开发中常见的一项任务,XML(eXtensible Markup Language)作为一种结构化数据存储格式,被广泛用于数据交换、配置文件和Web服务等场景。本篇文章将详细探讨Java如何利用DOM4J库来解析XML文件...

    Java解析XML工具类--(java源码)

    * 本类是专门解析XML文件的,主要用于为系统读取自己的配置文件时提供最方便的解析操作 * @author HX * */ public class XmlManager { /** * 得到某节点下某个属性的值 * @param element 要获取属性的...

    java 解析XML性能对比分析Demo

    本文将深入探讨几种不同的XML解析方法,并通过实际的“Java解析XML性能对比分析Demo”来展示它们的性能差异。我们将讨论DOM、SAX、JDOM、DOM4J和JAXB这五种解析器,以及它们各自的特点和适用场景。 1. DOM(文档...

    使用java解析XML文件,解析完之后将解析结果导入mysql数据库中

    本教程将介绍如何使用Java解析XML文件,并将解析结果导入MySQL数据库。 首先,我们需要引入处理XML的Java库——JAXB(Java Architecture for XML Binding)和DOM(Document Object Model)API。JAXB用于对象与XML...

    Java解析XML的jar包+四种解析方法

    java解析xml的四种方法的比较,还有四种方法所用到的jar包 附带程序例子 1.DOM生成和解析XML文档 2.SAX生成和解析XML文档 3.DOM4J生成和解析XML文档 4.JDOM生成和解析XML

    java解析XML的四种方式

    ### Java解析XML的四种方式详解 #### 一、DOM(Document Object Model) DOM是一种平台和语言中立的接口,它将XML文档表示为一个树结构,使得程序可以创建、读取、更新或删除树中的元素。DOM实现了W3C的标准,能够...

    java解析xml例子

    本篇文章将深入探讨如何在Java中解析XML,以帮助你理解和实践相关知识。 一、DOM解析器 DOM(Document Object Model)解析器是Java中的一种常用方法,它将整个XML文档加载到内存中,形成一个树形结构。以下是一个...

    java解析xml动态生成树形菜单结构

    总结起来,实现“java解析xml动态生成树形菜单结构”的项目,需要掌握以下核心知识点: 1. Java的DOM解析XML,构建树形数据结构。 2. 设计和实现无限层级的树形菜单数据模型。 3. 使用`JSTree`库在前端渲染树形菜单...

    java解析xml包

    Java XML解析是处理XML文档的重要技术,XML(Extensible Markup Language)作为一种通用的数据交换格式,广泛应用于各种领域。本主题将深入探讨Java中常用的两种XML解析库:DOM4J和JDOM。 首先,我们来看DOM4J。DOM...

    JAVA解析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)...

    java解析xml的四种经典方法

    Java解析XML的四种经典方法是XML处理中常用的技术,它们分别是DOM、SAX、StAX和JDOM。每种方法都有其独特的特性和适用场景,下面将详细介绍这四种方法。 1. DOM(Document Object Model)解析: DOM是W3C制定的一种...

    java解析xml——dom

    ### Java解析XML——DOM详解 #### 一、DOM解析概念 **Document Object Model (DOM)**是一种平台和语言中立的接口,它允许程序和脚本动态地访问和更新文档的内容、结构和样式。DOM最初是为HTML设计的,但后来也被...

Global site tag (gtag.js) - Google Analytics