xml转换成map
import java.io.IOException;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
import org.xml.sax.InputSource;
public class ParseXml {
/**
* xml转换成TreeMap
* @param xml
* @return
*/
public static Map<String, Object> xmlToTreeMap(String xml) {
Map<String, Object> map = new TreeMap<String, Object>();
try {
if (xml == null || "".equals(xml.replaceAll(" ", ""))) {
return null;
} else {
Document doc = (new SAXBuilder()).build(new StringReader(xml));
Element element = doc.getRootElement();
if (element == null) {
throw new Exception("XML包格式错误:没有根元素");
}
List it = element.getChildren();
int len = it.size();
if (len == 0) {
throw new Exception("XML包格式错误:没有子元素");
}
map = new TreeMap<String, Object>();
for (int i = 0; i < len; i++) {
Element subelement = (Element) it.get(i);
List itc = subelement.getChildren();
if (itc != null && itc.size() > 0) {
for (int n = 0; n < itc.size(); n++) {
Element sub = (Element) itc.get(n);
map.put(sub.getName().toLowerCase(), sub.getText());
}
}
map.put(subelement.getName().toLowerCase(), subelement.getText());
}
}
} catch (JDOMException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return map;
}
/**
* xml转换成HashMap
*
* @param xml
* @return
*/
public static Map<String, Object> xmlToHashMap(String xml) {
Map<String, Object> map = new HashMap<String, Object>();
try {
if (xml == null || "".equals(xml.replaceAll(" ", ""))) {
return null;
} else {
Document doc = (new SAXBuilder()).build(new StringReader(xml));
Element element = doc.getRootElement();
if (element == null) {
throw new Exception("XML包格式错误:没有根元素");
}
List it = element.getChildren();
int len = it.size();
if (len == 0) {
throw new Exception("XML包格式错误:没有子元素");
}
map = new HashMap<String, Object>();
for (int i = 0; i < len; i++) {
Element subelement = (Element) it.get(i);
List itc = subelement.getChildren();
if (itc != null && itc.size() > 0) {
for (int n = 0; n < itc.size(); n++) {
Element sub = (Element) itc.get(n);
map.put(sub.getName().toLowerCase(), sub.getText());
}
}
map.put(subelement.getName().toLowerCase(), subelement.getText());
}
}
} catch (JDOMException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return map;
}
/**
* @Title: parseXmlToListMap
* @Description: xml转listmap
* @param @param xml
* @param @return
* @return List<Map> 返回类型
* @throws
*/
@SuppressWarnings("unchecked")
public static List<Map<String, Object>> parseXmlToListMap(String xml) {
List<Map<String, Object>> argMapList = new ArrayList<Map<String, Object>>();
Map<String, Object> retMap = new HashMap<String, Object>();
try {
StringReader read = new StringReader(xml);
// 创建新的输入源SAX 解析器将使用 InputSource 对象来确定如何读取 XML 输入
InputSource source = new InputSource(read);
// 创建一个新的SAXBuilder
SAXBuilder sb = new SAXBuilder();
// 通过输入源构造一个Document
Document doc = (Document) sb.build(source);
Element root = doc.getRootElement();// 指向根节点
if(root != null){
List<Element> es = root.getChildren();
if (es != null && es.size() != 0) {
for (Element element : es) {
retMap.put(element.getName(), element.getText());
}
}
}
argMapList.add(retMap);
} catch (Exception e) {
e.printStackTrace();
}
return argMapList;
}
public static void main(String[] args) {
String xml = "<xml><code><![CDATA[code]]></code><msg><![CDATA[msg]]></msg><responseId>12345678</responseId></xml>";
System.out.println(parseXmlToListMap(xml).get(0));
}
}
xml转换成map的更多相关文章
- Dom4j把xml转换成Map(固定格式)
/** * 可解析list * * @param fileName * @return * @throws Exception */ @SuppressWarnings("unchecked ...
- Dom4j把xml转换成Map(非固定格式)
将xml转换成Map,能够应对不用结构的xml,而不是只针对固定格式的xml.转换规则:1.主要是Map与List的互相嵌套2.同名称的节点会被装进List 示例: import java.util. ...
- 如何在ASP.NET中用C#将XML转换成JSON
本文旨在介绍如果通过C#将获取到的XML文档转换成对应的JSON格式字符串,然后将其输出到页面前端,以供JavaScript代码解析使用.或许你可以直接利用JavaScript代码通过Ajax的方式来 ...
- Properties 转换成Map
转自:http://feitianbenyue.iteye.com/blog/1759259 对于Properties 转换成Map 的问题: 第一时间想到的肯定有以下: 1. 迭代出来 再 pu ...
- 如何在ASP.NET中用C#将XML转换成JSON 【转】
本文旨在介绍如果通过C#将获取到的XML文档转换成对应的JSON格式字符串,然后将其输出到页面前端,以供JavaScript代码解析使用.或许你可以直接利用JavaScript代码通过Ajax的方 ...
- 分享非常有用的Java程序 (关键代码)(五)---把 Array 转换成 Map
原文:分享非常有用的Java程序 (关键代码)(五)---把 Array 转换成 Map import java.util.Map; import org.apache.commons.lang.Ar ...
- C#将XML转换成JSON转换XML
原文:C#将XML转换成JSON转换XML using System; using System.Collections.Generic; using System.Linq; using Syste ...
- 将Object对象转换成Map 属性名和值的形式
将Java对象转换成Map的键值对形式 代码: package cn.lonelcoud.util; import com.sun.deploy.util.StringUtils; import ja ...
- C#将XML转换成JSON 使用 JavaScript 将 XML 转成 JSON
如何在ASP.NET中用C#将XML转换成JSON [JavaScript]代码 // Changes XML to JSON function xmlToJson(xml) { // Create ...
随机推荐
- hdu 4788 (2013成都现场赛 H题)
100MB=10^5KB=10^8B 100MB=100*2^10KB=100*2^20B Sample Input2100[MB]1[B] Sample OutputCase #1: 4.63%Ca ...
- Django和Mysql合用时,显示时间问题
这个以前没系统处理过,感觉前端页面显示正常,就OK. 但有的不重要的地方,显示有8小时错乱,也没有列入优先级处理. 昨天下细看了一些网上文档,找取了解决思路. 大致想法是:数据库里存+00:00时区的 ...
- CCF CSP 201509-2 日期计算
CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201509-2 日期计算 问题描述 给定一个年份y和一个整数d,问这一年的第d天是几月几日? ...
- CCF CSP 201709-3 JSON查询
CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201709-3 JSON查询 问题描述 JSON (JavaScript Object Not ...
- [翻译]Gulp.js简介
我们讨论了很多关于怎么减少页面体积,提高重网站性能的方法.有些是操作是一劳永逸的,如开启服务器的gzip压缩,使用适当的图片格式,或删除一些不必要的字符.但有一些任务是每次工作都必须反复执行的.如 新 ...
- bzoj 3676 后缀自动机+马拉车+树上倍增
思路:用马拉车把一个串中的回文串个数降到O(n)级别,然后每个串在后缀自动机上倍增找个数. #include<bits/stdc++.h> #define LL long long #de ...
- Vue中directives的用法
关于 vue 中 directives 的用法问题,详细可以参考vue官方对directives的解释 当前文章主要讲述directives怎么用,directives做权限按钮的功能 ###1. d ...
- 个人博客www.0x002.com
cnblogs只是相当于一个备份,感兴趣的读者赏脸关注下.
- CSS3组件化之菊花loading
<div class="juhua-loading"> <div class="jh-circle"></div> < ...
- python 文件内容修改替换操作
当我们读取文件中内容后,如果想要修改文件中的某一行或者某一个位置的内容,在python中是没有办法直接实现的,如果想要实现这样的操作只能先把文件所有的内容全部读取出来,然后进行匹配修改后写入到新的文件 ...