XML解析错误javascript servlet

XML解析错误javascript servlet,java,javascript,xml,servlets,Java,Javascript,Xml,Servlets,我有一个简单的servlet应用程序,它向JavaScript发送XML响应。 当我签入Firebug时,JavaScript会作为 <valid> AT&T,0.51851370625875,0.97944711419669,Verizon,0.47641942539114,0.99005717081381,wifi,0.48596657869633,0.88912486160201 </valid> 我以前使用过完全相同的方法-不确定为什么这不再有效。 我所

我有一个简单的servlet应用程序,它向JavaScript发送XML响应。 当我签入Firebug时,JavaScript会作为

<valid> AT&T,0.51851370625875,0.97944711419669,Verizon,0.47641942539114,0.99005717081381,wifi,0.48596657869633,0.88912486160201 </valid>
我以前使用过完全相同的方法-不确定为什么这不再有效。 我所需要做的就是将值
(AT&T,0.51851370625875,0.97944711419669,Verizon,0.47641942539114,0.9900577081381,wifi,0.48596657869633,0.8891248616021)存储在javascript数组中


有什么想法吗?

问题在于AT&T中的&。你必须转义该字符,而不是逗号

在第一个逗号处出现错误的原因是它试图将&T解析为html字符


替换应为
和#38对于符号和

,如前所述,这不是有效的XML。
&
是XML中的一个特殊字符

您希望使用来转义XML中的特殊字符。首先下载,将其放入
/WEB-INF/lib
文件夹,并按如下方式替换servlet的最后一行:

response.getWriter().write("<valid>" + StringEscapeUtils.escapeXml(ret) + "</valid>");
response.getWriter().write(“+StringEscapeUtils.escapeXml(ret)+”);


与具体问题无关,您的
字符串
+=
的串联循环效率非常低。考虑使用<代码> StringBuilder < /代码>。< /P>请用四个空格缩进代码,正如在帮助部分中所说的那样。
String ret="";

for (int i=0; i < ping.size(); i++)
{

    ret += ping.get(i) ;
    if(i != ping.size()-1){
        ret += ",";
    }                   
}

response.setContentType("text/xml");           
response.setHeader("Cache-Control", "no-cache");

response.getWriter().write("<valid>"+ret+"</valid>");
var message = xmlHttp.responseXML.getElementsByTagName("valid")[0].childNodes[0].nodeValue;
response.getWriter().write("<valid>" + StringEscapeUtils.escapeXml(ret) + "</valid>");