Dom解析
1 /**功能说明 报文解析 2 * @param 3 * @author 4 * @since 5 */ 6 package com.mall.common; 7 8 import java.io.IOException; 9 import java.io.StringReader; 10 import java.util.List; 11 12 import org.jdom.Document; 13 import org.jdom.Element; 14 import org.jdom.JDOMException; 15 import org.jdom.Namespace; 16 import org.jdom.input.SAXBuilder; 17 import org.xml.sax.InputSource; 18 19 20 public class DuXMLDoc { 21 @SuppressWarnings("unchecked") 22 public List xmlElements(String xmlDoc) { 23 //创建一个新的字符串 24 StringReader read = new StringReader(xmlDoc); 25 //创建新的输入源SAX 解析器将使用 InputSource 对象来确定如何读取 XML 输入 26 InputSource source = new InputSource(read); 27 //创建一个新的SAXBuilder 28 SAXBuilder sb = new SAXBuilder(); 29 try { 30 //通过输入源构造一个Document 31 Document doc = sb.build(source); 32 //取的根元素 33 Element root = doc.getRootElement(); 34 System.out.println("根元素的名称:"+root.getName());//输出根元素的名称(测试) 35 //得到根元素所有子元素的集合 36 List jiedian = root.getChildren(); 37 //获得XML中的命名空间(XML中未定义可不写) 38 Namespace ns = root.getNamespace(); 39 Element et = null; 40 for(int i=0;i<jiedian.size();i++){ 41 et = (Element) jiedian.get(i);//循环依次得到子元素 42 /**//* 43 * 无命名空间定义时 44 * et.getChild("users_id").getText(); 45 * et.getChild("users_address",ns).getText() 46 */ 47 System.out.println(et.getChild("users_id",ns).getText()); 48 System.out.println(et.getChild("users_address",ns).getText()); 49 } 50 /**//* 51 * 如要取<row>下的子元素的名称 52 */ 53 et = (Element) jiedian.get(0); 54 List zjiedian = et.getChildren(); 55 for(int j=0;j<zjiedian.size();j++){ 56 Element xet = (Element) zjiedian.get(j); 57 System.out.println(xet.getName()); 58 } 59 } catch (JDOMException e) { 60 // TODO 自动生成 catch 块 61 e.printStackTrace(); 62 } catch (IOException e) { 63 // TODO 自动生成 catch 块 64 e.printStackTrace(); 65 } 66 return null; 67 } 68 public static void main(String[] args){ 69 DuXMLDoc doc = new DuXMLDoc(); 70 String xml = "<?xml version=\"1.0\" encoding=\"gb2312\"?>"+ 71 "<Result xmlns=\"http://www.fiorano.com/fesb/activity/DBQueryOnInput2/Out\">"+ 72 "<row resultcount=\"1\">"+ 73 "<users_id>1001 </users_id>"+ 74 "<users_name>wangwei </users_name>"+ 75 "<users_group>80 </users_group>"+ 76 "<users_address>1001号 </users_address>"+ 77 "</row>"+ 78 "<row resultcount=\"1\">"+ 79 "<users_id>1002 </users_id>"+ 80 "<users_name>wangwei </users_name>"+ 81 "<users_group>80 </users_group>"+ 82 "<users_address>1002号 </users_address>"+ 83 "</row>"+ 84 "</Result>"; 85 doc.xmlElements(xml); 86 } 87 88 }