利用JDOM解析字符串形式XML
我通过调用webService接口返回一段XML(字符串)如下
<?xml version="1.0" encoding="UTF-8"?><UserQueryResponse><BODY><Mobile>13802414972</Mobile><ReturnCode>0</ReturnCode><ReturnMsg>操作成功</ReturnMsg><ServiceNumber>1</ServiceNumber><Services><Service><ServiceID>-QTAQKD</ServiceID><State>1</State><Subscribedate>2011-01-17 13:33:38</Subscribedate><Unsubscribedate/></Service></Services></BODY></UserQueryResponse>
package com.sunhoo.hcpms.util;import java.io.IOException;import java.io.StringReader;import java.util.HashMap;import java.util.List;import java.util.Map;import org.jdom.JDOMException;import org.jdom.input.SAXBuilder;import org.xml.sax.InputSource;/** * 通过JDOM解析XML字符串 * @author java4lyvee@gmail.com */public class ParseXMLUtils {@SuppressWarnings("unchecked")public static Map<String, Object> parseXML(String xml)throws JDOMException, IOException {/** *用于存放节点的信息** */Map<String, Object> map = new HashMap<String, Object>();/** *创建一个新的字符串*** */StringReader xmlReader = new StringReader(xml);/** **创建新的输入源SAX 解析器将使用 InputSource 对象来确定如何读取 XML 输入 */InputSource xmlSource = new InputSource(xmlReader);/** *创建一个SAXBuilder* */SAXBuilder builder = new SAXBuilder();/** *通过输入源SAX构造一个Document** */org.jdom.Document doc = builder.build(xmlSource);/** *获得根节点** */org.jdom.Element elt = doc.getRootElement();/** *获得BODY节点** */org.jdom.Element body = elt.getChild("BODY");/** *获得body节点下面的所有子节点*** */List<org.jdom.Element> child = body.getChildren();/** *遍历出body节点下面所有的子节点,节点名称和内容用put到map* */for (org.jdom.Element childEle : child) {map.put(childEle.getName(), childEle.getText());}return map;}}