zoukankan      html  css  js  c++  java
  • javascript读取xml

    /**
     * 得到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\/>');
    }
  • 相关阅读:
    表单提交
    js 设备判断(移动端pc端 安卓ios 微信)
    js 页面history.back()返回上一页,ios 不重新加载ready的解决办法
    移动端解决单机事件延迟fastclick
    定时器时间动态变化(变速)
    gulp配置(编译压缩转码自动刷新注释全)
    ios和安卓H5交互桥接
    倒计时
    PHP跨域jsonp方式
    1.Redis简介/配置文件
  • 原文地址:https://www.cnblogs.com/skyblue/p/873136.html
Copyright © 2011-2022 走看看