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\/>');
    }
  • 相关阅读:
    如何快速搞定websocket
    websocket断网消息补发
    div嵌套多个点击事件,点击后如何阻止多次事件触发冒泡
    仿照 MediatR实现了一个中介者模式Publish功能,使用同MediatR
    git提交指南(超级详细)
    删除github中的文件夹
    抽取进程集成模式注册报错,OGG-08221,OCI Error ORA-44004 invalid qualified SQL Name
    Oracle-参数学习_no_or_expansion
    OGG19版本源端新增字段,目标端复制进程不报错,使用MAPALLCOLUMNS进行测试
    Oracle存储过程如何定位慢SQL?
  • 原文地址:https://www.cnblogs.com/skyblue/p/873136.html
Copyright © 2011-2022 走看看