1. 程式人生 > >Java解析xml格式資料

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

}