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工具类,代码已封装好,一个方法即可将两种格式文本互转,注意是互转,网上很多只有xml转map,并不支持map转xml
java map解析成xml java map解析成xml
使用dom4j封装的工具类,可以实现 xml to map ,map to xml 互相转换,带属性 不带属性,有根节点 和无根节点都可以转换,具体看测试代码
Servlet利用SAX解析XML文档(新上传的有源码)Servlet利用SAX解析XML文档(新上传的有源码)Servlet利用SAX解析XML文档(新上传的有源码)Servlet利用SAX解析XML文档(新上传的有源码)Servlet利用SAX解析XML文档(新上传的有...
xml2map XML到MAP转换器的Golang编写的转换器 有时需要表示以前未知的结构。 这种通用表示形式通常是JSON,XML或数据映射结构形式的字符串。 类似于map [string] interface {}或map [interface {}] interface {}。 ...
1、xml文档解析 2、 dom4j解析xml 3、实现xml文件解析 xml字符串解析 xml MAP键值对解析 4、实现xml写入与生成文件
根据xmlPath路径,找到对应的xml文件,进行解析!之前找了好多感觉和自己的需求不太一样,这个可以根据Xpath解析出来xml里所有的信息,十分好用 举个例子 xmlPath = "E://upload/xml/1580242.163.xml"; XPathUtil util ...
java转换xml、list、map和json
2 调用解析类,提供对象名。 3 返回NSMutableDictionary或者NSMutableArray,键值封装。 示例见最后的注释。 XML封装类待续。。。 转载请注明来源,谢谢 ====== XmlResolve.h #import ...
我写的用VC解析xml文件,通过MSXML,比较简单,不过是个好例子,很小,例子是CHINAmap2008中的城市,飞机,机场xml文件,希望能有小用。
Pull解析XML:Android从服务器端获取XMl文件输入流,并用Pull方式解析,附被解析的XMl文档
利用xpah解析xml、提供xpath操作map集合同时减少bean类的生成
计息xml格式的字符串,封装到Map,Object>集合中
[Android实例] Android之解析XML文件
此类分装了xml的解析方法,非常使用 CCfgDataMgr::CCfgDataMgr(void) { } CCfgDataMgr::~CCfgDataMgr(void) { } bool CCfgDataMgr::CallBackFunc(string xmlNodeCurrent, string xmlNodeParent, map,string> str2...
一般银行返回的字符串为xml报文,需先转换为xml文档方便解析。
xml2map 支持 io.js 和节点 >= 0.11分期付款$ npm i -g xml2map快速开始$ xml2map.tojson(xml)执照麻省理工学院许可证 (MIT) 版权所有 (c) 2013 xdf 特此授予任何人免费获得本软件副本和相关文档文件(“软件”)的...
ChinaMap 利用xml解析SVG文件绘制中国省份地图