今天有人问了我一个问题, 通过
$.get('d.xml', function(data) {
alert(data);
$(data).find('entry').each(function() {
alert("BBBBBBBBBBBBB");
});
});
加载本地xml文件(不是放到服务器读取),在ie下能 alert(data) 打印出xml信息,但是不能输出字符'BBBBBBBBB'。也就是说
$(data)没有能够加载生成xml dom信息。
我采用google chrome调试了下,发现 alert的data为空("")。
我将网页发布到tomcat6.0下运行在ie与chrome下都正常,于是我妄下了定论 jquery 加载xml文件需要在服务器下。
后来感觉有些武断,上网搜索了下。经过长时间调试与搜索终于发现了我的错误 。
本地文件是可以直接采用javascript加载的,所有jquery同样能够实现本地加载。虽然,是通过ajax实现的,但是后台我们可以不用管,毕竟jquery加载xml的方式就是如此(没准后台加载本地文件不是通过ajax呢 )。
这里就需要说明下为什么ie下能够加载本地xml信息,即:alert(data)打印出xml信息,但是却不能解析xml了,
看网站:
http://hi.baidu.com/billschen/blog/item/fedc4203b07666fd09fa937c.html
另外还要说明下,经过我网上的一番胡乱搜索:
chrome浏览器默认是不支持读取本地文件的,罪孽啊,害的我武断了下。
好了问题处理完了,看收获:
1. 任何问题的出现都是有原因的,多多调试,多多搜索(谁叫当前互联网这么发达呢 )
2. ie下采用jqueyr的ajax加载本地文件时需要注意。
3. chrome浏览器不支持本地xml文件加载
4.jquery解析xml的方式为,将xml转化为dom,然后就可以像操作html一样的操作了
另外:
jquery解析XML字符串或XML文件的方法
读取XML字符串:
例如:
$(document).ready(function(){
var xml = "<xml><root><record><name>liubl</name></record><record><name>chencp</name</record></root></xml>";
//var xml="<table><tr><td>100<td></tr></table>"; //也可直接识别Table
var obj = $(xml).find("record");
});
注意:一定要在外面包一层xml,这样jquery才能被识别,并且xml中还需要有一个根节点即root或其它可自定义。
我试了下加<?xml version=\"1.0\" encoding=\"UTF-8\"?> 貌似也起作用