javascript读取xml

所属分类: 网络编程 / JavaScript 阅读数: 224
收藏 0 赞 0 分享

复制代码 代码如下:
/** 
 * 得到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\/>'); 
}

更多精彩内容其他人还在看

BootStrap数据表格实例代码

本文通过实例代码给大家分享了BootStrap数据表格的相关知识,感兴趣的朋友一起看看吧
收藏 0 赞 0 分享

基于vue的短信验证码倒计时demo

这篇文章主要介绍了基于vue的短信验证码倒计时demo,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

详解React Native开源时间日期选择器组件(react-native-datetime)

本篇文章主要介绍了详解React Native开源时间日期选择器组件(react-native-datetime),具有一定的参考价值,有兴趣的可以了解一下
收藏 0 赞 0 分享

JS库particles.js创建超炫背景粒子插件(附源码下载)

particles.js用于创建粒子的轻量级 JavaScript 库。使用方法非常简单,代码也很容易实现,下面通过本文给大家分享JS库particles.js创建超炫背景粒子插件附源码下载,需要的朋友参考下吧
收藏 0 赞 0 分享

JS库之Waypoints的用法详解

waypoints的功能非常强大,一款用于捕获各种滚动事件的插件,下面跟随脚本之家小编一起学习JS库之Waypoints的用法吧
收藏 0 赞 0 分享

强大的JavaScript响应式图表Chartist.js的使用

本篇文章主要介绍了强大的JavaScript响应式图表Chartist.js的使用,具有一定的参考价值,有兴趣的可以了解一下
收藏 0 赞 0 分享

详解wow.js中各种特效对应的类名

本篇文章主要介绍了wow.js中各种特效对应的类名 ,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

JS库之Highlight.js的用法详解

highlight.js是一款轻量级的Web代码语法高亮库。下面通过实例代码给大家分享JS库之Highlight.js的用法详解,感兴趣的朋友跟随脚本之家小编一起学习吧
收藏 0 赞 0 分享

详解动画插件wow.js的使用方法

本篇文章主要介绍了动画插件wow.js的使用方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

JS库 Highlightjs 添加代码行号的实现代码

Highlightjs是一款优秀的代码高亮Js组件,可以很方便地对各种语言编写的代码添加语法高亮样式。本文重点给大家介绍Highlightjs 添加代码行号的实现代码,需要的朋友参考下吧
收藏 0 赞 0 分享
查看更多