`
chaojie445
  • 浏览: 16113 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

解析xml为map

    博客分类:
  • java
阅读更多
	public static Map<String, Object> Xml2Map(String xml)
			throws DocumentException {
		SAXReader reader = new SAXReader();
		StringReader sr = new StringReader(xml);
		Document document = reader.read(sr);
		OutputFormat format = OutputFormat.createPrettyPrint();
		format.setEncoding("UTF-8");
		Element root = document.getRootElement();
		return Dom2Map(root);
	}

1.传入element,以标签名为键,标签体为值。
2.同名称的节点会被装进List,无限层嵌套。
3.如上面的例子,将根节点传到下面的方法中。
      若根节点下无其他标签节点,则以根节点名称为map的key,内容为value。
      若根节点下有其他标签节点,则以其他标签节点的名称为key,内容为value。
      若根节点下有其他标签节点,并且节点名称相同,则以此相同的标签名称为key,内容形式是list为value。
	private static Map Dom2Map(Element e) {
		Map map = new HashMap(); 
		List list = e.elements();
		if (list.size() > 0) {
			for (int i = 0; i < list.size(); i++) {
				Element iter = (Element) list.get(i);
				List mapList = new ArrayList();

				if (iter.elements().size() > 0) {
					Map m = Dom2Map(iter);
					if (map.get(iter.getName()) != null) {
						Object obj = map.get(iter.getName());
						if (!obj.getClass().getName().equals(
								"java.util.ArrayList")) {
							mapList = new ArrayList();
							mapList.add(obj);
							mapList.add(m);
						}
						if (obj.getClass().getName().equals(
								"java.util.ArrayList")) {
							mapList = (List) obj;
							mapList.add(m);
						}
						map.put(iter.getName(), mapList);
					} else
						map.put(iter.getName(), m);
				} else {
					if (map.get(iter.getName()) != null) {
						Object obj = map.get(iter.getName());
						if (!obj.getClass().getName().equals(
								"java.util.ArrayList")) {
							mapList = new ArrayList();
							mapList.add(obj);
							mapList.add(iter.getText());
						}
						if (obj.getClass().getName().equals(
								"java.util.ArrayList")) {
							mapList = (List) obj;
							mapList.add(iter.getText());
						}
						map.put(iter.getName(), mapList);
					} else
						map.put(iter.getName(), iter.getText());
				}
			}
		} else
			map.put(e.getName(), e.getText());
		return map;
	}
分享到:
评论

相关推荐

    解析xml文件-转换map新增数据库

    解析xml文件-转换map新增数据库解析xml文件-转换map新增数据库

    java一键xml转map,一键map转xml工具类

    在Java中,我们可以使用`javax.xml.parsers.DocumentBuilderFactory`和`org.w3c.dom.Document`来解析XML文档,然后遍历DOM树,将其节点转化为Map。例如,每个XML元素的标签名作为键,元素的文本内容作为值。如果元素...

    java xml和map互转

    `xmlToMap`方法首先使用SAXReader解析XML字符串,然后递归地遍历XML文档的元素,将它们转换为Map结构。 `mapToXml`方法则将Map转换成XML字符串: ```java import org.dom4j.Document; import org.dom4j....

    xml解析为map的java代码可直接使用

    xml解析为map,代码已经测试,可直接使用。

    map解析成xml

    java map解析成xml java map解析成xml

    Java xml转化为map

    例如,DOM4J的`DocumentHelper.parseText()`可以解析XML字符串,然后通过遍历`Element`和`Attribute`来构建Map。 - Apache Commons Digester库提供了一种规则驱动的方式来将XML转换为Map,通过定义匹配规则,当匹配...

    jaxb xml 转map

    1. 创建一个XML解析器:使用`javax.xml.parsers.DocumentBuilderFactory`来创建一个解析器,然后使用该解析器来解析XML字符串或文件,得到`org.w3c.dom.Document`对象。 2. 遍历XML节点:通过`Document`对象获取根...

    Java xml 转 map

    1. **解析XML**:首先,你需要使用Java的内置库如`javax.xml.parsers.DocumentBuilderFactory`来创建一个`DocumentBuilder`实例,然后使用这个实例解析XML字符串或文件,得到一个`Document`对象。这一步骤用于将XML...

    java将xml串转换成Map类型

    将xml串转换成Map类型,如果有重复节点,自动转换为list类型存储,所以最终转换并非绝对Map

    java转换xml、list、map和json

    例如,在上面的代码中,maptoXml方法将Map对象转换为xml字符串。该方法首先创建了一个Document对象,然后添加一个node元素,接着遍历Map对象的keySet,生成key元素,并将其添加到node元素中。最后,使用doc2String...

    Servlet利用SAX解析XML文档(新上传的有源码)

    Servlet利用SAX解析XML文档(新上传的有源码)Servlet利用SAX解析XML文档(新上传的有源码)Servlet利用SAX解析XML文档(新上传的有源码)Servlet利用SAX解析XML文档(新上传的有源码)Servlet利用SAX解析XML文档(新上传的有...

    Android 解析xml文件

    本篇将深入探讨Android中解析XML文件的方法,以及如何通过示例代码`ReadXmlConfigFile`来实现这一过程。 ### XML解析器类型 Android提供了多种解析XML的方式,主要包括以下几种: 1. **DOM解析器**:Document ...

    dom4j 解析写入xml

    1、xml文档解析 2、 dom4j解析xml 3、实现xml文件解析 xml字符串解析 xml MAP键值对解析 4、实现xml写入与生成文件

    Map转换成xml

    ### Map转换为XML的知识点详解 在Java编程中,将数据结构如`Map`转换为XML格式是一种常见的需求,尤其是在处理配置文件、数据交换或与Web服务交互时。以下是对如何实现这一转换的深入解析,涵盖了代码逻辑、关键...

    map/list集合转化成xml字符串 xml字符串转化成map/list集合

    这里,通常会使用`DOM`解析器或`StAX (Streaming API for XML)`来解析XML。以下是一个使用`DOM`解析器将XML字符串转换为`Map`的示例: ```java import org.w3c.dom.Document; import org.w3c.dom.Node; import org....

    用Stax组装及解析XML

    ### 使用StAX组装与解析XML #### 一、引言 在处理XML文档时,Java提供了多种工具和技术,包括DOM、SAX以及本文将重点讨论的Streaming API for XML(简称StAX)。StAX是一种用于读取和写入XML数据的事件驱动型API,...

    java 使用JDOM解析xml文件.docx

    ClassPathXmlApplicationContext 类使用 JDOM 库解析 XML 文件,并将解析出来的对象存储在一个 Map 中。 使用 JDOM 库的优势 使用 JDOM 库解析 XML 文件有很多优势。首先,JDOM 库提供了一个简单易用的 API,易于...

    [Android实例] Android之解析XML文件

    ### Android实例:解析XML文件 #### 一、引言 在Android开发中,解析XML文件是一项常见的需求。本文将详细介绍如何使用SAX(Simple API for XML)解析器来解析XML文件,并通过一个具体的实例来进行说明。 #### 二...

    XPathUtil,根据Xpath解析xml文件

    根据xmlPath路径,找到对应的xml文件,进行解析!之前找了好多感觉和自己的需求不太一样,这个可以根据Xpath解析出来xml里所有的信息,十分好用 举个例子 xmlPath = "E://upload/xml/1580242.163.xml"; XPathUtil util ...

Global site tag (gtag.js) - Google Analytics