不能正确读XML文件,请教 本帖最后由 staticabc 于 2012-03-23 16:25:13 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 按F12,打开IE的开发人员工具,然后查看脚本是否出错误了。 function createXMLHttpRequest() { var xmlHttp; try { xmlHttp = new XMLHttpRequest(); } catch(e) { var XmlHttpVersions = new Array("MSXML2.XMLHTTP.6.0", "MSXML2.XMLHTTP.7.0", "MSXML2.XMLHTTP.8.0", "MSXML2.XMLHTTP.9.0", "MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"); for (var i=0; i<XmlHttpVersions.length && !xmlHttp; i++) { try { xmlHttp = new ActiveXObject(XmlHttpVersions[i]); } catch (e) {} } } if (!xmlHttp) alert("Error creating the XMLHttpRequest object."); else XMLHttpReq=xmlHttp; } function sendRequest(url){ createXMLHttpRequest(); XMLHttpReq.open("Get", url, true); XMLHttpReq.onreadystatechange =function(){ processResponse(); } XMLHttpReq.send(null); } function processResponse() { if (XMLHttpReq.readyState == 4) { if (XMLHttpReq.status == 200) { updateServer(); } else { alert("錯誤"); } } } function updateServer() { var HTML=''; var num=''; var str=''; var xml = XMLHttpReq.responseXML; var res=xml.getElementsByTagName("res"); var temp; HTML+='<table width="90%" align="right" class="TablePanel" border="0">'+ '<tr>'; var areaId=''; for(i=0;i<res.length;){ var stud=res[i]; areaId = stud.getElementsByTagName("areaId")[0].firstChild.data; var billNum = stud.getElementsByTagName("billNum")[0].firstChild.data; var ming = stud.getElementsByTagName("ming")[0].firstChild.data; var rname = stud.getElementsByTagName("rname")[0].firstChild.data; var count = stud.getElementsByTagName("count")[0].firstChild.data; HTML+='<td><input type="checkbox" name="billno" onclick="check(this);" id="billno" value="'+billNum+'" /></td>'; HTML+='<td><font style="font-size:14px;">'+ billNum +'</font></td>'; HTML+='<td align="left"><font style="font-size:14px;">'+ count+' </font></td>'; HTML+='<td colspan="4"><font style="font-size:14px;">'+ rname; HTML+= ming +'</font></td>'; HTML+='</tr><tr>'; i++; } 我找到问题的所在了:1.要把html文件、xml文件、js文件放入服务器的根目录(对于tomcat来说,就是webapps\ROOT),再用浏览器访问;2.xml文件的编码不能用Unicode或Unicode big endian,可以用ANSI或者UTF-8或者Western European格式的。纠结了好久……今天突然又想起来了,然后就按照上面的方法解决了 我是ls的马甲,对于ls的两个解释,再做一下补充:1.http://www.w3school.com.cn/xml/xml_parser.asp跨域访问出于安全方面的原因,现代的浏览器不允许跨域的访问。这意味着,网页以及它试图加载的 XML 文件,都必须位于相同的服务器上。W3School 的实例所打开的 XML 文件位于 W3School 的域上。假如你打算在自己的网页上使用上面的例子,则必须把 XML 文件放到自己的服务器上。否则,xmlDoc.load() 将产生错误 "Access is denied"。2.http://www.w3school.com.cn/xml/xml_encoding.asp错误消息如果您试图向 IE 中载入 XML 文档,可能会得到两种指示编码问题的错误: 在文本内容中发现非法字符如果 XML 文档中的某个字符与编码属性不匹配,您就会得到这个错误消息。通常,当 XML 文件中含有外国字符,且当文件使用类似记事本的单字节编码编辑器保存,以及没有指定编码属性时,您就会得到这个错误消息。将当前编码切换为不被支持的指定编码如果您的文件被保存为 Unicode/UTF-16,但是编码属性被指定为单字节编码(比如 Windows-1252、ISO-8859-1 或者 UTF-8)时,那么您就会得到这个错误消息。或者当您的文档被保存为单字节编码,但编码属性被指定为双字节编码(比如 UTF-16)时,也会得到这个错误消息。结论结论是:编码属性应当被指定为文档被保存时所使用的编码。我最好的避免错误的建议是:使用支持编码的编辑器 确定编辑器使用的编码 在您的 XML 文档中使用相同的编码属性 问下,关于spring+log4j动态日志切换问题 求JAVA站点地图生成源码? java 工具栏按钮分组问题(在线等) 用javascript与java进行RSA加密与解密 在struts中关于选择框select的一个问题 自助电子商城 在win2000下用jsp,javabean,servlet编写的外网程序,有数据库。用在linux下会不会有问题? 热烈庆祝,个人网站终于完成(以struts框架),欢迎来测试 学习整合spring与hibernate,遇到错误了啊, 用户余额下单如何保证数据一致性 div 浏览器兼容问题 spring到底是怎么生成bean实例的
var xmlHttp;
try
{
xmlHttp = new XMLHttpRequest();
}
catch(e)
{
var XmlHttpVersions = new Array("MSXML2.XMLHTTP.6.0",
"MSXML2.XMLHTTP.7.0",
"MSXML2.XMLHTTP.8.0",
"MSXML2.XMLHTTP.9.0",
"MSXML2.XMLHTTP.5.0",
"MSXML2.XMLHTTP.4.0",
"MSXML2.XMLHTTP.3.0",
"MSXML2.XMLHTTP",
"Microsoft.XMLHTTP");
for (var i=0; i<XmlHttpVersions.length && !xmlHttp; i++)
{
try
{
xmlHttp = new ActiveXObject(XmlHttpVersions[i]);
}
catch (e) {}
}
}
if (!xmlHttp)
alert("Error creating the XMLHttpRequest object.");
else
XMLHttpReq=xmlHttp; }
function sendRequest(url){
createXMLHttpRequest();
XMLHttpReq.open("Get", url, true);
XMLHttpReq.onreadystatechange =function(){
processResponse();
}
XMLHttpReq.send(null);
}
function processResponse() {
if (XMLHttpReq.readyState == 4) {
if (XMLHttpReq.status == 200) {
updateServer();
} else {
alert("錯誤");
}
}
}
function updateServer() {
var HTML='';
var num='';
var str='';
var xml = XMLHttpReq.responseXML;
var res=xml.getElementsByTagName("res");
var temp;
HTML+='<table width="90%" align="right" class="TablePanel" border="0">'+
'<tr>';
var areaId='';
for(i=0;i<res.length;){
var stud=res[i];
areaId = stud.getElementsByTagName("areaId")[0].firstChild.data;
var billNum = stud.getElementsByTagName("billNum")[0].firstChild.data;
var ming = stud.getElementsByTagName("ming")[0].firstChild.data;
var rname = stud.getElementsByTagName("rname")[0].firstChild.data;
var count = stud.getElementsByTagName("count")[0].firstChild.data;
HTML+='<td><input type="checkbox" name="billno" onclick="check(this);" id="billno" value="'+billNum+'" /></td>';
HTML+='<td><font style="font-size:14px;">'+ billNum +'</font></td>';
HTML+='<td align="left"><font style="font-size:14px;">'+ count+' </font></td>';
HTML+='<td colspan="4"><font style="font-size:14px;">'+ rname;
HTML+= ming +'</font></td>';
HTML+='</tr><tr>';
i++;
}
1.要把html文件、xml文件、js文件放入服务器的根目录(对于tomcat来说,就是webapps\ROOT),再用浏览器访问;
2.xml文件的编码不能用Unicode或Unicode big endian,可以用ANSI或者UTF-8或者Western European格式的。
纠结了好久……今天突然又想起来了,然后就按照上面的方法解决了
1.http://www.w3school.com.cn/xml/xml_parser.asp
跨域访问
出于安全方面的原因,现代的浏览器不允许跨域的访问。
这意味着,网页以及它试图加载的 XML 文件,都必须位于相同的服务器上。
W3School 的实例所打开的 XML 文件位于 W3School 的域上。
假如你打算在自己的网页上使用上面的例子,则必须把 XML 文件放到自己的服务器上。否则,xmlDoc.load() 将产生错误 "Access is denied"。2.http://www.w3school.com.cn/xml/xml_encoding.asp
错误消息
如果您试图向 IE 中载入 XML 文档,可能会得到两种指示编码问题的错误: 在文本内容中发现非法字符
如果 XML 文档中的某个字符与编码属性不匹配,您就会得到这个错误消息。通常,当 XML 文件中含有外国字符,且当文件使用类似记事本的单字节编码编辑器保存,以及没有指定编码属性时,您就会得到这个错误消息。将当前编码切换为不被支持的指定编码
如果您的文件被保存为 Unicode/UTF-16,但是编码属性被指定为单字节编码(比如 Windows-1252、ISO-8859-1 或者 UTF-8)时,那么您就会得到这个错误消息。或者当您的文档被保存为单字节编码,但编码属性被指定为双字节编码(比如 UTF-16)时,也会得到这个错误消息。
结论
结论是:编码属性应当被指定为文档被保存时所使用的编码。我最好的避免错误的建议是:使用支持编码的编辑器
确定编辑器使用的编码
在您的 XML 文档中使用相同的编码属性