|
2006-05-19
TAG:JavaScript
一般的情况下,我们异步拿到数据,使用DOM来取节点中的数据。但在一些极端的情况下,比如对一些不很支持xml的浏览器或系统,我们只能把xml数据当作普通字符串来取得。 在这里我实现了两种方法来 1、取得指定节点中的值 2、多个节点组中相同节点的值并以数组返回。 经过测试 可以正常运作 可以适用于大部分xml数据读取 下面为我的SendData.js全部代码: /*SendStr(xmlstring,xmldata) 返回所要的字符串, xmlstring为要从其中查询的xml数据,类型为字符型 xmldata格式为:cfg/base/lottid 也可为lottid不带"/"(要求lottid在xmlstring中是唯一的节点),"lottid"为xml中的节点 SendArray(xmlstring,xmldata)返回所要的数组, xmlstring意义同上,xmldata格式同上(不支持不带"/"的格式数据) xml数据样例:
888 32 12 23
*/ //返回字符串 开始 function SendStr(xmlstring,xmldata) { if(xmldata.indexOf('/')>=0)//判断传入的数据是否符合标准 { paraArr = xmldata.split("/");//分割数据到数组 var first = paraArr[paraArr.length-1]; eo="<"+first+">"; eoend =""+first+">"; var cy = xmlstring.substring(xmlstring.indexOf(eo)+eo.length,xmlstring.indexOf(eoend)); return cy; } else if(xmldata.indexOf('/')<0) { eo="<"+xmldata+">"; eoend =""+xmldata+">"; var cy = xmlstring.substring(xmlstring.indexOf(eo)+eo.length,xmlstring.indexOf(eoend)); return cy; } } //返回字符串 结束 //返回字符串数组 开始 function SendArray(xmlstring,xmldata) { if(xmldata.indexOf('/')>=0)//判断传入的数据是否符合标准 { paraArr = xmldata.split("/");//分割数据到数组 var acr = new Array(); Arrayr = xmlstring.split("<"+paraArr[paraArr.length-2]+">"); for(var i=1;i { var a ="<"+paraArr[paraArr.length-1]+">"; var ab =""+paraArr[paraArr.length-1]+">"; var cy =Arrayr[i].substring(Arrayr[i].indexOf(a)+a.length,Arrayr[i].indexOf(ab)); acr.push(cy); } return acr; } } //返回字符串数组 结束 //异步得到远端xml数据 开始 //异步得到远端xml数据 结束 }
下面是ajaxCode.html全部代码:
|