解析xml格式数据需要先引入jdom架包
package com.cn;
import java.io.IOException;import java.io.StringReader;
import java.util.List;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.Namespace;
import org.jdom.input.SAXBuilder;
import org.xml.sax.InputSource;
/**
* 解析xml格式字符串的数据
* @author menglongyin 2017年6月22日
*/
public class DuXMLDoc {
/**
* 解析xml格式数据*
* @param xmlDoc:xml格式的字符串
* @return
* @throws IOException
* @throws JDOMException
*/
public static Map<String, Object> xmlElements(String xmlDoc) throws JDOMException, IOException {
// 创建一个新的字符串
StringReader read = new StringReader(xmlDoc);
// 创建新的输入源SAX 解析器将使用 InputSource 对象来确定如何读取 XML 输入
InputSource source = new InputSource(read);
// 创建一个新的SAXBuilder
SAXBuilder sb = new SAXBuilder();
// 通过输入源构造一个Document
Document doc = sb.build(source);
// 取的根元素
Element root = doc.getRootElement();
// 得到根元素所有子元素的集合
List jiedian = root.getChildren();
Element et = null;
Map<String, Object> resultMap = new HashMap<String, Object>();
for (int i = 0; i < jiedian.size(); i++) {
et = (Element) jiedian.get(i);// 循环依次得到子元素
if (et.getName().equals("sign")) {// et.getName():获取元素名称
resultMap.put("sign", et.getText());// et.getText():获取元素文本
} else if (et.getName().equals("retcode")) {
resultMap.put("retcode", et.getText());
} else if (et.getName().equals("funcode")) {
resultMap.put("funcode", et.getText());
} else if (et.getName().equals("datetime")) {
resultMap.put("datetime", et.getText());
} else if (et.getName().equals("transid")) {
resultMap.put("transid", et.getText());
} else if (et.getName().equals("model")) {
List childrenNode = et.getChildren();
for (int j = 0; j < childrenNode.size(); j++) {
et = (Element) childrenNode.get(j);// 循环依次得到子元素
if (et.getName().equals("score")) {
resultMap.put("score", et.getText());
}
break;
}
}
}
return resultMap;
}
public static void main(String[] args){
DuXMLDoc doc = new DuXMLDoc();
String xml = "<response>"+
"<sign>e635f9f9a31efee891a5b44474a4a4ca</sign>"+
"<retcode>11111</retcode>"+
"<funcode>22222</funcode>"+
"<datetime>33333</datetime>"+
"<transid>44444</transid>"+
"<model>"+
"<retcode>55555</retcode>"+
"<score>66666</score>"+
"<funcode>77777</funcode>"+
"<transid>88888</transid>"+
"<datetime>99999</datetime>"+
"</model></response>";
doc.xmlElements(xml);
}
}