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;
}

发表评论

邮箱地址不会被公开。 必填项已用*标注