如坐春风
人生苦短,要紧跟自己的梦想,爱你所做的事业。
posts - 161,  comments - 290,  trackbacks - 0
一般来说,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 如坐春风 阅读(964) 评论(1)  编辑  收藏 所属分类: Ajax

FeedBack:
# re: Ajax程序中,ResponseXml输出之改进(利用dom4j)
2007-09-27 15:39 | just as yeti
恩 挺好 ,这样编码是个很好的方式 学习  回复  更多评论
  



标题  
姓名  
主页
验证码 *  
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
 


mail:junglesong@gmail.com
msn:junglesong_5@hotmail.com

Locations of visitors to this page

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

常用链接

留言簿(2)

随笔分类(179)

随笔档案(123)

个人软件下载

我的其它博客

我的邻居们

最新随笔

搜索

  •  

积分与排名

  • 积分 - 109402
  • 排名 - 66

最新评论

阅读排行榜

评论排行榜

60天内阅读排行

如坐春风(http://www.blogjava.net)原创,转载请注明出处.