java中xml转map实例代码
package com.xue.tools;
import java.io.File; import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set;
import net.sf.json.JSONObject;
import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.Namespace; import org.dom4j.QName;
import com.xue.tools.text.MyTextUtil;
/*** * xml转换成map,当节点位置和名称均相同时则转成list 注意不处理节点的属性 * * @author bobo * */ public class TEST1 { public static void main(String[] args) throws UnsupportedEncodingException, DocumentException { // 获取一个xml文件 String textFromFile = MyTextUtil.getTextFromFile(new File("src/tt.xml")); // 调用核心入口方法 xml2map(textFromFile); }
static Map xml2map(String xmlString) throws DocumentException { Document doc = DocumentHelper.parseText(xmlString); Element rootElement = doc.getRootElement(); Map<String, Object> map = new HashMap<String, Object>(); ele2map(map, rootElement); System.out.println(map); // 到此xml2map完成,下面的代码是将map转成了json用来观察我们的xml2map转换的是否ok String string = JSONObject.fromObject(map).toString(); System.out.println(string); return map; }
/*** * 核心方法,里面有递归调用 * * @param map * @param ele */ static void ele2map(Map map, Element ele) { System.out.println(ele); // 获得当前节点的子节点 List<Element> elements = ele.elements(); if (elements.size() == 0) { // 没有子节点说明当前节点是叶子节点,直接取值即可 map.put(ele.getName(), ele.getText()); } else if (elements.size() == 1) { // 只有一个子节点说明不用考虑list的情况,直接继续递归即可 Map<String, Object> tempMap = new HashMap<String, Object>(); ele2map(tempMap, elements.get(0)); map.put(ele.getName(), tempMap); } else { // 多个子节点的话就得考虑list的情况了,比如多个子节点有节点名称相同的 // 构造一个map用来去重 Map<String, Object> tempMap = new HashMap<String, Object>(); for (Element element : elements) { tempMap.put(element.getName(), null); } Set<String> keySet = tempMap.keySet(); for (String string : keySet) { Namespace namespace = elements.get(0).getNamespace(); List<Element> elements2 = ele.elements(new QName(string,namespace)); // 如果同名的数目大于1则表示要构建list if (elements2.size() > 1) { List<Map> list = new ArrayList<Map>(); for (Element element : elements2) { Map<String, Object> tempMap1 = new HashMap<String, Object>(); ele2map(tempMap1, element); list.add(tempMap1); } map.put(string, list); } else { // 同名的数量不大于1则直接递归去 Map<String, Object> tempMap1 = new HashMap<String, Object>(); ele2map(tempMap1, elements2.get(0)); map.put(string, tempMap1); } } } }
}
相关推荐
在`EasyXmlUtil`类中,这两个方法的实现可能会使用递归处理Map的层级结构,以确保复杂的嵌套Map也能正确地转换成XML。同时,为了处理XML的特殊字符,如<、>等,工具类可能还包含了字符转义的逻辑。 关于`maven依赖....
将xml串转换成Map类型,如果有重复节点,自动转换为list类型存储,所以最终转换并非绝对Map
总结,使用DOM4J库,我们可以方便地在Java中实现XML与Map之间的互转。这不仅适用于简单的键值对,还支持嵌套结构、属性以及有无根节点的情况。在实际项目中,可以根据具体需求对这些方法进行适当的调整和优化。
要实现XML到Map的转换,我们可以使用Java的标准库JAXB(Java Architecture for XML Binding)或者第三方库如DOM4J、JDOM、Apache Commons Digester等。这里我们主要讨论使用JAXB的方法,因为它是Java平台的一部分,...
在描述中提到的“递归 XML 转 MAP”,是指XML文档可能存在嵌套结构,递归方法是处理这种结构的有效手段。递归意味着函数调用自身来处理XML元素的子节点,直到所有节点都被遍历并转换为Map结构。 以下是一个简化的...
"java转换xml、list、map和json" 本文主要讲述了Java中将xml、list、map和json之间的转换的相关知识点。 xml和map之间的转换 在Java中,xml和map之间的转换可以通过使用dom4j库来实现。dom4j是一个Java开源库,...
首先,让我们探讨`Map`集合转成XML字符串的过程。一个`Map`对象存储键值对,可以使用各种库如`JAXB (Java Architecture for XML Binding)`、`DOM (Document Object Model)`或`SAX (Simple API for XML)`来实现转换。...
总结一下,XML转实体类和实体类转XML涉及的主要知识点有:Java反射API、XML解析(DOM、SAX、StAX、JAXB),以及对象的序列化和反序列化。在实际开发中,我们需要根据项目需求选择合适的工具和方法,确保数据的准确...
3. 创建Map:创建一个`java.util.HashMap`或其他类型的Map,用来存储XML节点的键值对。 4. 将节点添加到Map:遍历过程中,将节点名称作为键,节点内容作为值放入Map中。如果有属性,可以将属性名和属性值作为二级...
1. **Java List转XML**: - 首先,我们需要一个包含多个Map对象的List。Map对象通常用于存储键值对,键和值可以是任何类型。 - 使用dom4j库,我们可以创建一个Document对象来表示XML文档,Element对象代表XML的...
在Java编程中,将数据结构如`Map`转换为XML格式是一种常见的需求,尤其是在处理配置文件、数据交换或与Web服务交互时。以下是对如何实现这一转换的深入解析,涵盖了代码逻辑、关键步骤以及可能遇到的问题。 #### 一...
Java解析和生成XML的知识点主要涵盖了使用JAXB(Java Architecture for XML Binding)框架来实现Java对象与XML(可扩展标记语言)之间的数据转换。JAXB提供了一种便捷的方式,通过注解(Annotation)来实现这一过程...
Java语言将xml格式数据转map格式数据
xml与map转换 这个应用的情况并不多见,一般都在两个系统间沟通的时候会有xml和json的相互转换。因为map和json是天生可相互转换的,所以这里只有xml能和map进行转换,那json就不是问题了。
3. **自动处理集合和映射**:它可以自动处理Java集合框架,如List、Set和Map,将其转换为XML的数组或元素列表。 4. **类型安全**:通过类型安全的转换,可以确保在反序列化时,对象类型与原始对象匹配。 5. **自定义...
java后台从数据库读取 数据,封装到list集合,控制层转化为XML格式数据
xml解析为map,代码已经测试,可直接使用。
在Java开发中,数据结构的转换是常见的任务之一,例如将Map对象转换为XML格式的字符串,或者将XML数据解析成Map对象。标题提到的"MAP<--->XML格式互相转换接口,已封装,可直接使用(java版)"正是这样一个工具,它...
java map解析成xml java map解析成xml
本教程将深入讲解如何使用Java读取JSON文件,并将其内容转化为Map以便进行取值操作。 首先,我们需要引入处理JSON的库。Java标准库并不直接支持JSON操作,所以我们通常会使用第三方库,如`org.json`或`...