<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    竹里館→憶童年

    獨(dú)坐幽篁里,彈琴復(fù)長嘯;深林人不知,明月來相照
    posts - 9, comments - 23, trackbacks - 0, articles - 0
       :: 首頁 :: 新隨筆 :: 聯(lián)系 ::  :: 管理

    JDOM解析XML字符串(非XML文檔)

    Posted on 2007-07-20 13:13 憶童年 閱讀(7433) 評論(4)  編輯  收藏 所屬分類: XML and WebService

    這是我最近做項(xiàng)目時遇到的問題
       我是通過JMS機(jī)制獲得Topic的消息其消息格式是XML.本想將其寫成XML文檔再通過JDOM讀取.但考慮到實(shí)際開發(fā)中消息傳遞頻繁就放棄了該思路.最終采取了直接對其分析的方式,這樣就必須對取得的TextMessage做處理
       如下是我通過JDOM方式將得到的TextMessage(XML格式)進(jìn)行解析的過程:

    package cmo.shubai.jdom;

    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;

    public class DuXMLDoc {
        
    public List xmlElements(String xmlDoc) {
            
    //創(chuàng)建一個新的字符串
            StringReader read = new StringReader(xmlDoc);
            
    //創(chuàng)建新的輸入源SAX 解析器將使用 InputSource 對象來確定如何讀取 XML 輸入
            InputSource source = new InputSource(read);
            
    //創(chuàng)建一個新的SAXBuilder
            SAXBuilder sb = new SAXBuilder();
            
    try {
                
    //通過輸入源構(gòu)造一個Document
                Document doc = sb.build(source);
                
    //取的根元素
                Element root = doc.getRootElement();
                System.out.println(root.getName());
    //輸出根元素的名稱(測試)
                
    //得到根元素所有子元素的集合
                List jiedian = root.getChildren();
                
    //獲得XML中的命名空間(XML中未定義可不寫)
                Namespace ns = root.getNamespace();
                Element et 
    = null;
                
    for(int i=0;i<jiedian.size();i++){
                    et 
    = (Element) jiedian.get(i);//循環(huán)依次得到子元素
                    /*
                     * 無命名空間定義時
                     * et.getChild("users_id").getText();
                     * et.getChild("users_address",ns).getText()
                     
    */

                    System.out.println(et.getChild(
    "users_id",ns).getText());
                    System.out.println(et.getChild(
    "users_address",ns).getText());
                }

                
    /*
                 * 如要取<row>下的子元素的名稱
                 
    */

                et 
    = (Element) jiedian.get(0);
                List zjiedian 
    = et.getChildren();
                
    for(int j=0;j<zjiedian.size();j++){
                    Element xet 
    = (Element) zjiedian.get(j);
                    System.out.println(xet.getName());
                }

            }
     catch (JDOMException e) {
                
    // TODO 自動生成 catch 塊
                e.printStackTrace();
            }
     catch (IOException e) {
                
    // TODO 自動生成 catch 塊
                e.printStackTrace();
            }

            
    return null;
        }

        
    public static void main(String[] args){
            DuXMLDoc doc 
    = new DuXMLDoc();
            String xml 
    = "<?xml version=\"1.0\" encoding=\"gb2312\"?>"+
            
    "<Result xmlns=\"http://www.fiorano.com/fesb/activity/DBQueryOnInput2/Out\">"+
               "<row resultcount=\"1\">"+
                  
    "<users_id>1001     </users_id>"+
                  
    "<users_name>wangwei   </users_name>"+
                  
    "<users_group>80        </users_group>"+
                  
    "<users_address>1001號   </users_address>"+
               
    "</row>"+
               
    "<row resultcount=\"1\">"+
                  
    "<users_id>1002     </users_id>"+
                  
    "<users_name>wangwei   </users_name>"+
                  
    "<users_group>80        </users_group>"+
                  
    "<users_address>1002號   </users_address>"+
               
    "</row>"+
            
    "</Result>";
            doc.xmlElements(xml);
        }

    }


    以上的例子和實(shí)際稍有出入-這個例子主要是用來演示JDOM解析XML字符串
    關(guān)于JDOM對XML文檔的解析可看JDOM處理帶Namespace的XML文件

    評論

    # re: JDOM解析XML字符串(非XML文檔)  回復(fù)  更多評論   

    2007-07-20 16:36 by sitinspring
    讓我想起了寒冬做JMS的歲月.

    # re: JDOM解析XML字符串(非XML文檔)  回復(fù)  更多評論   

    2007-10-17 17:09 by xb
    thank you

    # re: JDOM解析XML字符串(非XML文檔)  回復(fù)  更多評論   

    2008-10-30 16:01 by 戰(zhàn)斗中的人
    非常感謝你的文章

    # re: JDOM解析XML字符串(非XML文檔)  回復(fù)  更多評論   

    2010-11-08 14:29 by www
    thank you~~

    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 在线观看特色大片免费视频| 亚洲一区二区视频在线观看| 亚洲国产精品成人午夜在线观看| 免费va在线观看| 国产精品免费无遮挡无码永久视频| 亚洲综合在线一区二区三区| 国产成人精品久久亚洲高清不卡 | 91香蕉国产线观看免费全集| 亚洲毛片基地4455ww| 亚洲精品久久久www| 18禁网站免费无遮挡无码中文| 男女交性无遮挡免费视频| 久久精品蜜芽亚洲国产AV| 免费看美女被靠到爽的视频| 男女午夜24式免费视频| 亚洲精品无码永久在线观看男男| 国产亚洲精品无码成人| 国产亚洲福利一区二区免费看| 久久午夜伦鲁片免费无码| 日韩在线观看视频免费| 亚洲一级毛片视频| 亚洲乱码中文字幕久久孕妇黑人 | 国产99精品一区二区三区免费| 亚洲黄色在线视频| 亚洲国产精品成人久久蜜臀| 国产香蕉免费精品视频| 中国性猛交xxxxx免费看| 亚洲免费网站观看视频| 亚洲精品视频免费看| 亚洲热线99精品视频| 国产免费AV片无码永久免费| 国产福利在线免费| 亚洲视频在线观看免费| 两个人看的www免费视频中文| 无码天堂亚洲国产AV| 亚洲av永久无码嘿嘿嘿| 亚洲午夜在线电影| 亚洲精品色午夜无码专区日韩| 免费一级e一片在线播放| 免费爱爱的视频太爽了| 91久久成人免费|