FireFox读CDATA数据
以下是后台输出的Xml文件
<?xml version=”1.0″ encoding=”utf-8″?>
<Vnices>
<![CDATA[我是Molay!]]>
</Vnices>
我想用Ajax技术读这个 CDATA数据并显示
以下是JS代码
// JScript source code
function ajaxRead(file,fun){
var xmlObj = null;
if(window.XMLHttpRequest){
xmlObj = new XMLHttpRequest();
} else if(window.ActiveXObject){
xmlObj = new ActiveXObject(“Microsoft.XMLHTTP”);
} else {
return;
}
xmlObj.onreadystatechange = function(){
if(xmlObj.readyState == 4){
if (xmlObj.status ==200){
obj = xmlObj.responseXML;
CS(obj);
}else{
alert(“读取文件出错,错误号为 [” + xmlObj.status + “]”);
}
}
}
xmlObj.open(‘GET’, file, true);
xmlObj.send(null);
}
// 自定义测试函数
function CS(obj){
var res = obj.getElementsByTagName(‘Vnices’);
var temp = res[0].firstChild.nodeValue;
document.getElementById(“Fill”).innerHTML = temp;
}
IE下完全正常~但是FF死活不能读~ 🙁
气死我了,气死我了
但是我突然想到了给老大做WS站的时候遇到的一个问题,把这个问题解决了:
WS有一个读老大BLOG的RSS来生成新闻数据的模块
本来PHP5可以用很简单的SimpleXML类来和FLASH一样简单快捷的读XML的
但是老大空间是PHP4的没法子我只好用DOM XML FUNCTION来读
使用DOM和FLASH中解析XML不一样,它在每个节点前加上了 #text数据来保存一定相关数据的
所以上面的XML应该解释为
#text
<Vnices>
…………
于是我想到了FF是不是也是用DOM标准来解释XML的?
呵呵,修改CS函数的代码,解决哈哈:
// 自定义测试函数
function CS(obj){
var res = obj.getElementsByTagName(‘Vnices’);
// 一般情况下使用Xml解析的情况
var temp = res[0].firstChild.nodeValue;
// 针对类似FireFox之类使用DOM解析XML的情况
if(window.XMLHttpRequest){
// childNodes[0]代表的是这个节点开头的#text,下面一个才是CDATA标签
temp = res[0].childNodes[1].nodeValue;
}
document.getElementById(“Fill”).innerHTML = temp;
}
Filed under: 未分类 - @ 2007年10月18日 下午8:56