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 }

 

posted @ 2014-08-11 14:22  大都督  阅读(235)  评论(0编辑  收藏  举报