`
chaojie445
  • 浏览: 15739 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

解析xml为map

    博客分类:
  • java
阅读更多
	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新增数据库

    xml解析为map的java代码可直接使用

    xml解析为map,代码已经测试,可直接使用。

    java一键xml转map,一键map转xml工具类

    java一键xml转map,一键map转xml工具类,代码已封装好,一个方法即可将两种格式文本互转,注意是互转,网上很多只有xml转map,并不支持map转xml

    map解析成xml

    java map解析成xml java map解析成xml

    java xml和map互转

    使用dom4j封装的工具类,可以实现 xml to map ,map to xml 互相转换,带属性 不带属性,有根节点 和无根节点都可以转换,具体看测试代码

    Servlet利用SAX解析XML文档(新上传的有源码)

    Servlet利用SAX解析XML文档(新上传的有源码)Servlet利用SAX解析XML文档(新上传的有源码)Servlet利用SAX解析XML文档(新上传的有源码)Servlet利用SAX解析XML文档(新上传的有源码)Servlet利用SAX解析XML文档(新上传的有...

    xml2map:XML到MAP转换器的Golang编写

    xml2map XML到MAP转换器的Golang编写的转换器 有时需要表示以前未知的结构。 这种通用表示形式通常是JSON,XML或数据映射结构形式的字符串。 类似于map [string] interface {}或map [interface {}] interface {}。 ...

    dom4j 解析写入xml

    1、xml文档解析 2、 dom4j解析xml 3、实现xml文件解析 xml字符串解析 xml MAP键值对解析 4、实现xml写入与生成文件

    XPathUtil,根据Xpath解析xml文件

    根据xmlPath路径,找到对应的xml文件,进行解析!之前找了好多感觉和自己的需求不太一样,这个可以根据Xpath解析出来xml里所有的信息,十分好用 举个例子 xmlPath = "E://upload/xml/1580242.163.xml"; XPathUtil util ...

    java转换xml、list、map和json

    java转换xml、list、map和json

    Objective-c解析XML封装

    2 调用解析类,提供对象名。 3 返回NSMutableDictionary或者NSMutableArray,键值封装。 示例见最后的注释。 XML封装类待续。。。 转载请注明来源,谢谢 ====== XmlResolve.h #import ...

    xml-vc解析xml文档

    我写的用VC解析xml文件,通过MSXML,比较简单,不过是个好例子,很小,例子是CHINAmap2008中的城市,飞机,机场xml文件,希望能有小用。

    XmlPull解析XML

    Pull解析XML:Android从服务器端获取XMl文件输入流,并用Pull方式解析,附被解析的XMl文档

    xpath解析xml

    利用xpah解析xml、提供xpath操作map集合同时减少bean类的生成

    解析xml格式字符串

    计息xml格式的字符串,封装到Map,Object&gt;集合中

    [Android实例] Android之解析XML文件

    [Android实例] Android之解析XML文件

    XML文件解析类

    此类分装了xml的解析方法,非常使用 CCfgDataMgr::CCfgDataMgr(void) { } CCfgDataMgr::~CCfgDataMgr(void) { } bool CCfgDataMgr::CallBackFunc(string xmlNodeCurrent, string xmlNodeParent, map,string&gt; str2...

    xml字符串转换为xml文档并解析。

    一般银行返回的字符串为xml报文,需先转换为xml文档方便解析。

    xml2map:高性能xml解析器

    xml2map 支持 io.js 和节点 &gt;= 0.11分期付款$ npm i -g xml2map快速开始$ xml2map.tojson(xml)执照麻省理工学院许可证 (MIT) 版权所有 (c) 2013 xdf 特此授予任何人免费获得本软件副本和相关文档文件(“软件”)的...

    Android-ChinaMap利用xml解析SVG文件绘制中国省份地图

    ChinaMap 利用xml解析SVG文件绘制中国省份地图

Global site tag (gtag.js) - Google Analytics