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); } } } }
}
相关推荐
java一键xml转map,一键map转xml工具类,代码已封装好,一个方法即可将两种格式文本互转,注意是互转,网上很多只有xml转map,并不支持map转xml
将xml串转换成Map类型,如果有重复节点,自动转换为list类型存储,所以最终转换并非绝对Map
使用dom4j封装的工具类,可以实现 xml to map ,map to xml 互相转换,带属性 不带属性,有根节点 和无根节点都可以转换,具体看测试代码
最简单的 递归 XML 转 MAP
java转换xml、list、map和json
Java调用webService接口的时候,返回的是xml文件,我们需要将xml文件转化为string或者是map类型取值。这里提供的就是讲xml转化为map
<P>map集合转化成xml字符串</P> <P>xml字符串转化成map集合 <P>list集合转化成xml字符串 <P>xml字符串转化成list集合</P>
文件里包含jar包 dom4j-1.6.1.jar,list中放多个map,map里随意放键值对,最后可转换为xml文档,xml文档也可以解析存入list文件中
Java语言将xml格式数据转map格式数据
xml与map转换 这个应用的情况并不多见,一般都在两个系统间沟通的时候会有xml和json的相互转换。因为map和json是天生可相互转换的,所以这里只有xml能和map进行转换,那json就不是问题了。
java map解析成xml java map解析成xml
2、bean类的属性如果 是集合 只支持数组以及List、Map、Set。 3、bean类属性(boolean除外)前面两个字母要么全部小写,要么全部大写,否则 无法读存BEAN值。 4、bean类boolean属性(Boolean无此要求),前面三个字母...
xml解析为map,代码已经测试,可直接使用。
java转换xml、list、map和json.docxjava转换xml、list、map和json.docx
java转换xml、list、map和json.pdf
MAP --- XML格式互相转换接口,已封装成java工具类,可直接使用(java版),如果有问题可以给我私信,谢谢
java转换xml、list、map和json[借鉴].pdf
一般银行返回的字符串为xml报文,需先转换为xml文档方便解析。
本篇文章主要介绍了java实现Object和Map之间的转换3种方式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
java解释Xml 从数据库中读出来,解释Xml