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 ="";
  var cy = xmlstring.substring(xmlstring.indexOf(eo)+eo.length,xmlstring.indexOf(eoend));
  return cy;
 }
 else if(xmldata.indexOf('/')<0)
 {
  eo="<"+xmldata+">";
  eoend ="";
  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 ="";
   var cy =Arrayr[i].substring(Arrayr[i].indexOf(a)+a.length,Arrayr[i].indexOf(ab));
   acr.push(cy);
      
  }
 return acr;
   
 }
 
}
//返回字符串数组 结束

 
 //异步得到远端xml数据  开始
 
 //异步得到远端xml数据  结束
}

下面是ajaxCode.html全部代码:







坯子 @ 18:21:52 | 引用 0 | 编辑



评论
发表评论
 姓名: 
 E-mail: 
 地址: