XML解析错误javascript servlet
我有一个简单的servlet应用程序,它向JavaScript发送XML响应。 当我签入Firebug时,JavaScript会作为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> 我以前使用过完全相同的方法-不确定为什么这不再有效。 我所
<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>");