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

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

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

    春風博客

    春天里,百花香...

    導航

    <2007年9月>
    2627282930311
    2345678
    9101112131415
    16171819202122
    23242526272829
    30123456

    統計

    公告

    MAIL: junglesong@gmail.com
    MSN: junglesong_5@hotmail.com

    Locations of visitors to this page

    常用鏈接

    留言簿(11)

    隨筆分類(224)

    隨筆檔案(126)

    個人軟件下載

    我的其它博客

    我的鄰居們

    最新隨筆

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    Ajax程序中,ResponseXml輸出之改進(利用dom4j)

    一般來說,Ajax程序中,ResponseXml輸出一般使用XML拼接,舉例如下:
    PrintWriter out = response.getWriter();

    out.println(
    "<response>");        
    List
    <InOutType> types = service.search(predicate);
    out.println(
    "<status>passed</status>");
    out.println(
    "<message>查詢出的記錄數為:" + types.size() + "條</message>");
    for (InOutType typeTmp : types) {
        out.println(
    "<type>");
        out.println(
    "<name>" + typeTmp.getName() + "</name>");
        out.println(
    "</type>");
    }

    out.println(
    "</response>");

    個人認為這樣的方式用在小規模(編輯器一屏之內)ResponseXml還行,大規模就容易出錯了,它有以下缺點:
    1.節點開始如<response>和節點結束</response>必須成對書寫,容易遺忘出錯.
    2.節點和子節點關系不清晰.

    我設想用dom4j來解決這個問題,具體就是把上述代碼中的XML轉化成一個Document的節點,這樣成對書寫問題和節點關系的問題都能解決了.

    具體的類如下:
    package com.sitinspring.nnyy.util;

    import org.dom4j.Document;
    import org.dom4j.DocumentHelper;
    import org.dom4j.Element;

    public class XmlAssemble{
        
    private Document document;
        
    private Element root;
        
        
    public XmlAssemble(String rootName){
            document
    =DocumentHelper.createDocument();
            root 
    = document.addElement(rootName);
        }

        
        
    public String getXml(){
            
    return document.asXML();
        }

        
        
    public Element add(String elmName){
            
    return root.addElement(elmName);
        }

        
        
    public Element add(String elmName,String elmTxt){
            Element elm
    =root.addElement(elmName);
            elm.setText(elmTxt);
            
    return elm;
        }


        
    public Element getRoot() {
            
    return root;
        }

    }


    在這個類的幫助下,原有代碼改寫為:
    List<InOutType> types = service.search(predicate);
    XmlAssemble xmlAssemble
    =new XmlAssemble("response");
    xmlAssemble.add(
    "status","passed");
    xmlAssemble.add(
    "message","查詢出的記錄數為:"+ types.size() + "");
    for (InOutType typeTmp : types) {
        Element typeElm
    =xmlAssemble.add("type");
        Element nameElm
    =typeElm.addElement("name");
        nameElm.setText(typeTmp.getName());
    }

    PrintWriter out 
    = response.getWriter();        
    out.println(xmlAssemble.getXml());    

    明顯,上述代碼沒有書寫問題和節點關系問題,它的書寫過程是逐漸深入子節點的,代碼連貫性好多了,即使代碼超過一屏也能有效控制.

    以上.

    posted on 2007-09-27 12:58 sitinspring 閱讀(1924) 評論(2)  編輯  收藏 所屬分類: Ajax

    評論

    # re: Ajax程序中,ResponseXml輸出之改進(利用dom4j) 2007-09-27 15:39 just as yeti

    恩 挺好 ,這樣編碼是個很好的方式 學習  回復  更多評論   

    # re: Ajax程序中,ResponseXml輸出之改進(利用dom4j) 2008-08-27 15:28 ssssss

    效率如何呢  回復  更多評論   

    sitinspring(http://www.tkk7.com)原創,轉載請注明出處.
    主站蜘蛛池模板: 亚洲一区二区三区在线视频| 在线免费观看污网站| 亚洲中文字幕无码久久2017| 亚洲AV永久无码精品网站在线观看 | 永久黄色免费网站| 亚洲嫩模在线观看| 222www免费视频| 亚洲欧洲在线播放| 日韩av无码成人无码免费| 国产精品亚洲精品| 日本一道高清不卡免费| 特级毛片免费观看视频| 亚洲综合无码精品一区二区三区| 国产精品永久免费视频| 亚洲国产美女精品久久久久∴| 精品免费视在线观看| 亚洲理论在线观看| 全免费a级毛片免费**视频| 男男gvh肉在线观看免费| 国产亚洲精aa成人网站| 99精品在线免费观看| 午夜在线a亚洲v天堂网2019| 国产免费牲交视频| 久草免费福利视频| 成人亚洲国产va天堂| 免费在线观看你懂的| a毛片免费在线观看| 亚洲人成电影在线观看青青| 蜜桃精品免费久久久久影院| a级毛片免费高清视频| 亚洲高清中文字幕综合网| 波多野结衣久久高清免费 | 免费看少妇作爱视频| caoporm超免费公开视频| 亚洲精选在线观看| 国产成人青青热久免费精品| 99精品视频免费| 亚洲人精品亚洲人成在线| 国产亚洲精品a在线观看 | 色久悠悠婷婷综合在线亚洲| 4444www免费看|