我想做一个功能是:点击按钮,通过ajax访问数据库,从数据库查询数据
,将数据转化为XML,将数据发回客户端下面的代码是将数据转化为XML的那段:
StringBuffer xml = new StringBuffer("<?xml version="+"1.0"+" encoding="+"UTF-8"+"?>"+"<result>"); for(j=0;j<tableSize;j++)
{
xml.append("<data>");
xml.append("<ip>"+tableIp2[j]+"</ip>");
area=tableArea2[j];
area=new String(area.getBytes("ISO-8859-1"),"utf-8");
xml.append("<ipArea>"+area+"</ipArea>");
xml.append("<ipNum>"+tableData2[j]+"</ipNum>");
xml.append("</data>");
}

        xml.append("</result>");
        
        //通过这个方法发送回去
        sendResponse(response, xml.toString());我这样做在客户端只能用var results = xmlHttp.responseTest得到数据
不能用var results = xmlHttp.responseXML解析得到数据
XML解析部分是没有问题的
我想是我将数据库查询出来转化为XML时候出问题
请问应该怎么改?
谢谢~~~~`

解决方案 »

  1.   

    xml拼装完成后,直接通过response发出去啊
    response.setContentType("text/xml;charset=UTF-8");
    response.getWriter().write(xml.toString());
    response.getWriter().flush();
      

  2.   

    是这样发送出去的,我把他们放在sendResponse()方法里了
      

  3.   

    alert一下repsonseXML看看有没有数据,有的话就是你后面的解析代码错了.
      

  4.   

    恩,repsonseXML有数据的
    我是这样解析的
     var datas = results.getElementsByTagName("data");
               for(var i = 0; i < 1; i++) {
                    property = datas[i];
                    ip = property.getElementsByTagName("ip")[0].firstChild.nodeValue; 
               ipArea = property.getElementsByTagName("ipArea")[0].firstChild.nodeValue;
               ipNum = property.getElementsByTagName("ipNum")[0].firstChild.nodeValue;
            
                      addTableRow(ip, ipArea, ipNum);
                }
                }
      

  5.   

    results是这样得到的吗?
    results = xmlHttp.responseXML;另外for循环的条件好象有问题,应该是i<datas.length
      

  6.   

    在解析部分打上alert做调试看看,哪个地方没取到数据
      

  7.   

    出现错误的现象是AJAX引擎(不知道该不该这样称呼)一直在运行,不结束我以为是我的循环死循环了,所以故意让他循环一次
    调试发现程序到
    ip = property.getElementsByTagName("ip")[0].firstChild.nodeValue; 
    这一句就不走了
      

  8.   

    akert(results);
    得到结果是:[object]
      

  9.   

    发现XML写错了:
    StringBuffer xml = new StringBuffer("<?xml version="+"1.0"+" encoding="+"UTF-8"+"?>"+"<result>");StringBuffer xml = new StringBuffer("<?xml version=\"1.0\" encoding=\"UTF-8\"?><result>");
      

  10.   

    输出头response.setContentType("text/xml;charset=UTF-8");
    如果有问题,就是你的xml文件不对