javascript读取xml


Posted in Javascript onNovember 04, 2006
/**  
 * 得到XML文件属性的集合对象  
 * @param xmlDoc XML对象  
 * @param name 属性名称 如: user  
 * @return 返回 Array 对象  
 * Example XML:  
 * <?xml version='1.0' encoding='utf-8'?>  
 * <ekuy>  
 *   <user>  
 *     <name>  
 *       <cnname>小猪</cnname>  
 *     </name>  
 *     <age>27</age>  
 *   </user>  
 *   <user>  
 *     <name>  
 *       <cnname>小霞</cnname>  
 *     </name>  
 *     <age>26</age>  
 *   </user>  
 * </ekuy>  
 */  
function getXMLArray(xmlDoc, name) {  
  var keys = name.split('.');  
  var node = xmlDoc.documentElement;      // 得到根节点  
  var rtn = new Array();  
  var n = 0;    for(var i=0; i<keys.length; i++) {  
    var childs = node.childNodes;       // 得到子节点  
    var key = keys[i];  
 for(var k=0; k<childs.length; 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<keys.length; i++) {  
    var childs = node.childNodes;       // 得到子节点  
    var key = keys[i];  
 for(var k=0; k<childs.length; 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("<?xml version='1.0' encoding='utf-8'?><ekuy><user><name><cnname>小猪</cnname></name><age>27</age></user><user><name><cnname>小霞</cnname></name><age>26</age></user><user><name><cnname>小章</cnname></name><age>25</age></user></ekuy>");  

var list = getXMLArray(xmlDoc, 'user');  
for(var i=0; i<list.length; i++) {  
  var obj = list[i];  
  document.write(getValue(obj, 'name.cnname'));  
  document.write(getValue(obj, 'age'));  
  document.write('<br\/>');  
}
Javascript 相关文章推荐
Add Formatted Data to a Spreadsheet
Jun 12 Javascript
$()JS小技巧
Jul 21 Javascript
javascript XML数据显示为HTML一例
Dec 23 Javascript
比Jquery的document.ready更快的方法
Apr 28 Javascript
jquery js 获取时间差、时间格式具体代码
Jun 05 Javascript
JavaScript中的Math.SQRT1_2属性使用简介
Jun 14 Javascript
原生态js,鼠标按下后,经过了那些单元格的简单实例
Aug 11 Javascript
require、backbone等重构手机图片查看器
Nov 17 Javascript
Javascript别踩白块儿(钢琴块儿)小游戏实现代码
Jul 20 Javascript
Vim快速合并行及vim 将文件所有行合并到一行
Nov 27 Javascript
如何用原生js写一个弹窗消息提醒插件
May 24 Javascript
解决vue.js提交数组时出现数组下标的问题
Nov 05 Javascript
用javascript操作xml
Nov 04 #Javascript
一个加密JavaScript的开源工具PACKER2.0.2
Nov 04 #Javascript
破除一些网站复制、右键限制
Nov 04 #Javascript
js计数器代码
Nov 04 #Javascript
Js中sort()方法的用法
Nov 04 #Javascript
取得传值的函数
Oct 27 #Javascript
使javascript也能包含文件
Oct 26 #Javascript
You might like
浅析php数据类型转换
2014/01/09 PHP
ThinkPHP3.1新特性之G方法的使用
2014/06/19 PHP
thinkPHP实现的省市区三级联动功能示例
2017/05/05 PHP
Laravel中七个非常有用但很少人知道的Carbon方法
2017/09/21 PHP
Prototype 1.5.0_rc1 及 Prototype 1.5.0 Pre0小抄本
2006/09/22 Javascript
简略的前端架构心得&amp;&amp;基于editor为例子的编码小技巧
2010/11/25 Javascript
jquery滚动条插件jScrollPane的使用介绍
2013/11/08 Javascript
异步动态加载JS并运行(示例代码)
2013/12/13 Javascript
javascript操纵OGNL标签示例代码
2014/06/16 Javascript
JavaScript实现仿新浪微博大厅和腾讯微博首页滚动特效源码
2015/09/15 Javascript
jQuery dataTables与jQuery UI 对话框dialog的使用教程
2016/09/02 Javascript
jQuery Dialog 取消右上角删除按钮事件
2016/09/07 Javascript
Vue中的scoped实现原理及穿透方法
2018/05/15 Javascript
vue 实现axios拦截、页面跳转和token 验证
2018/07/17 Javascript
layui table单元格事件修改值的方法
2019/09/24 Javascript
浅谈Python爬取网页的编码处理
2016/11/04 Python
详解python中字典的循环遍历的两种方式
2017/02/07 Python
TensorFlow实现卷积神经网络CNN
2018/03/09 Python
python3调用windows dos命令的例子
2019/08/14 Python
基于Python执行dos命令并获取输出的结果
2019/12/30 Python
手动安装python3.6的操作过程详解
2020/01/13 Python
Django 解决distinct无法去除重复数据的问题
2020/05/20 Python
python脚本和网页有何区别
2020/07/02 Python
基于OpenCV的网络实时视频流传输的实现
2020/11/15 Python
CSS3样式linear-gradient的使用实例
2017/01/16 HTML / CSS
详解CSS3中使用gradient实现渐变效果的方法
2015/08/18 HTML / CSS
怎样实现H5+CSS3手指滑动切换图片的示例代码
2019/05/05 HTML / CSS
企业业务员岗位职责
2014/03/14 职场文书
总经理任命书范本
2014/06/05 职场文书
小学竞选班长演讲稿
2014/09/09 职场文书
银行开户授权委托书格式
2014/10/10 职场文书
老人再婚离婚协议书范本
2014/10/27 职场文书
个人求职自荐信范文
2015/03/06 职场文书
婚宴来宾致辞
2015/07/28 职场文书
Python turtle实现贪吃蛇游戏
2021/06/18 Python
JavaScript架构localStorage特殊场景下二次封装操作
2022/06/21 Javascript