Java解析xml格式数据

解析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);
   }

}

猜你喜欢

转载自blog.csdn.net/qq_27954241/article/details/80797908
今日推荐