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新增数据库
在Java中,我们可以使用`javax.xml.parsers.DocumentBuilderFactory`和`org.w3c.dom.Document`来解析XML文档,然后遍历DOM树,将其节点转化为Map。例如,每个XML元素的标签名作为键,元素的文本内容作为值。如果元素...
`xmlToMap`方法首先使用SAXReader解析XML字符串,然后递归地遍历XML文档的元素,将它们转换为Map结构。 `mapToXml`方法则将Map转换成XML字符串: ```java import org.dom4j.Document; import org.dom4j....
xml解析为map,代码已经测试,可直接使用。
java map解析成xml java map解析成xml
例如,DOM4J的`DocumentHelper.parseText()`可以解析XML字符串,然后通过遍历`Element`和`Attribute`来构建Map。 - Apache Commons Digester库提供了一种规则驱动的方式来将XML转换为Map,通过定义匹配规则,当匹配...
1. 创建一个XML解析器:使用`javax.xml.parsers.DocumentBuilderFactory`来创建一个解析器,然后使用该解析器来解析XML字符串或文件,得到`org.w3c.dom.Document`对象。 2. 遍历XML节点:通过`Document`对象获取根...
1. **解析XML**:首先,你需要使用Java的内置库如`javax.xml.parsers.DocumentBuilderFactory`来创建一个`DocumentBuilder`实例,然后使用这个实例解析XML字符串或文件,得到一个`Document`对象。这一步骤用于将XML...
将xml串转换成Map类型,如果有重复节点,自动转换为list类型存储,所以最终转换并非绝对Map
例如,在上面的代码中,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文档(新上传的有...
本篇将深入探讨Android中解析XML文件的方法,以及如何通过示例代码`ReadXmlConfigFile`来实现这一过程。 ### XML解析器类型 Android提供了多种解析XML的方式,主要包括以下几种: 1. **DOM解析器**:Document ...
1、xml文档解析 2、 dom4j解析xml 3、实现xml文件解析 xml字符串解析 xml MAP键值对解析 4、实现xml写入与生成文件
### Map转换为XML的知识点详解 在Java编程中,将数据结构如`Map`转换为XML格式是一种常见的需求,尤其是在处理配置文件、数据交换或与Web服务交互时。以下是对如何实现这一转换的深入解析,涵盖了代码逻辑、关键...
这里,通常会使用`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 #### 一、引言 在处理XML文档时,Java提供了多种工具和技术,包括DOM、SAX以及本文将重点讨论的Streaming API for XML(简称StAX)。StAX是一种用于读取和写入XML数据的事件驱动型API,...
ClassPathXmlApplicationContext 类使用 JDOM 库解析 XML 文件,并将解析出来的对象存储在一个 Map 中。 使用 JDOM 库的优势 使用 JDOM 库解析 XML 文件有很多优势。首先,JDOM 库提供了一个简单易用的 API,易于...
### Android实例:解析XML文件 #### 一、引言 在Android开发中,解析XML文件是一项常见的需求。本文将详细介绍如何使用SAX(Simple API for XML)解析器来解析XML文件,并通过一个具体的实例来进行说明。 #### 二...
根据xmlPath路径,找到对应的xml文件,进行解析!之前找了好多感觉和自己的需求不太一样,这个可以根据Xpath解析出来xml里所有的信息,十分好用 举个例子 xmlPath = "E://upload/xml/1580242.163.xml"; XPathUtil util ...