Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1165656
  • 博文数量: 1310
  • 博客积分: 3980
  • 博客等级: 中校
  • 技术积分: 8005
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-09 22:05
文章分类

全部博文(1310)

文章存档

2011年(1)

2008年(1309)

我的朋友

分类: 系统运维

2008-05-22 17:41:49

javascript读取xml

/**
 * 得到XML文件属性的集合对象
 * @param xmlDoc XML对象
 * @param name 属性名称 如: user
 * @return 返回 Array 对象
 * Example XML:
 *
 *
 *  
 *    
 *       小猪
 *    

 *     27
 *  

 *  
 *    
 *       小霞
 *    

 *     26
 *  

 *

 */
function getXMLArray(xmlDoc, name) {
  var keys = name.split('.');
  var node = xmlDoc.documentElement;      // 得到根节点
  var rtn = new Array();
  var n = 0;

  for(var i=0; i    var childs = node.childNodes;       // 得到子节点
    var key = keys[i];
 for(var k=0; k   var child = childs[k];
   if(child.nodeName == key) {     // 判断子节点是否符合
  if(i == keys.length-1) {
          rtn[n] = child;
    n++;
  } else {
    node = child;
    break;
  }
   }
 }
  }
 
  return rtn;
}
 
/**
 * 得到由getXMLArray函数得到对象中的值
 * @param node 节点对象
 * @param name
 * @return 返回 String
 */
function getValue(node, name) {
  var keys = name.split('.');
 
  for(var i=0; i    var childs = node.childNodes;       // 得到子节点
    var key = keys[i];
 for(var k=0; k   var child = childs[k];
   if(child.nodeName == key) {     // 判断子节点是否符合
  if(child.childNodes.length == 1) {        
    // 如果没有字节点,返回值
    return child.text;
  } else {                                
    // 还有子节点,继续分析
    node = child;
    break;
  }
   }
 }
  }
 
  return "";
}
 

// 测试:
 
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async = false;
xmlDoc.loadXML("小猪27小霞26小章25");
 
var list = getXMLArray(xmlDoc, 'user');
for(var i=0; i  var obj = list[i];
  document.write(getValue(obj, 'name.cnname'));
  document.write(getValue(obj, 'age'));
  document.write('');
}
本文来源于yaosansi'Blog
, 原文地址:

 
阅读(224) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~