java中xml转化成map_xml转换成map

本文介绍了一种使用Java进行XML解析的方法,包括将XML转换为TreeMap、HashMap及List<Map>的实现方式。通过示例代码展示了如何利用SAXBuilder构建Document对象,并从中提取所需的数据。
摘要由CSDN通过智能技术生成

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 xmlToTreeMap(String xml) {

Map map = new TreeMap();

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();

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 xmlToHashMap(String xml) {

Map map = new HashMap();

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();

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 返回类型

* @throws

*/

@SuppressWarnings("unchecked")

public static List> parseXmlToListMap(String xml) {

List> argMapList = new ArrayList>();

Map retMap = new HashMap();

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 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 = "12345678";

System.out.println(parseXmlToListMap(xml).get(0));

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值