<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://m.tkk7.com)原創,轉載請注明出處.
    主站蜘蛛池模板: 亚洲av无码一区二区三区网站| 四虎免费久久影院| 久久精品视频亚洲| 花蝴蝶免费视频在线观看高清版| 久久国产成人精品国产成人亚洲 | A级毛片内射免费视频| 日韩亚洲Av人人夜夜澡人人爽 | 久久亚洲精品成人av无码网站| 另类免费视频一区二区在线观看| 亚洲国产精品无码专区| 精品免费tv久久久久久久| 亚洲成人动漫在线| 久久久久久精品成人免费图片| 亚洲av乱码一区二区三区| 免费人成视频在线| 美女无遮挡免费视频网站| 国产精品亚洲精品日韩已方 | 中文字幕无码免费久久99 | 国产福利电影一区二区三区,免费久久久久久久精 | 亚洲日韩精品无码专区加勒比| 午夜a级成人免费毛片| 一级毛片aaaaaa视频免费看| 亚洲综合无码精品一区二区三区| 成人久久免费网站| 亚洲无吗在线视频| 国产精品免费小视频| 国产精品免费αv视频| 日韩精品亚洲人成在线观看| 欧美在线看片A免费观看| 亚洲а∨精品天堂在线| 亚洲无人区一区二区三区| 99re6免费视频| 亚洲精品无码你懂的| 亚洲日韩国产一区二区三区| 久久亚洲免费视频| 亚洲一区二区三区成人网站 | 三年片免费高清版| 欧洲亚洲国产清在高| 性色av无码免费一区二区三区| 成人午夜免费视频| 亚洲成AV人综合在线观看|