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\/>');
    }
  • 相关阅读:
    bzoj 4012: [HNOI2015]开店
    POJ 1054 The Troublesome Frog
    POJ 3171 Cleaning Shifts
    POJ 3411 Paid Roads
    POJ 3045 Cow Acrobats
    POJ 1742 Coins
    POJ 3181 Dollar Dayz
    POJ 3040 Allowance
    POJ 3666 Making the Grade
    洛谷 P3657 [USACO17FEB]Why Did the Cow Cross the Road II P
  • 原文地址:https://www.cnblogs.com/skyblue/p/873136.html
Copyright © 2011-2022 走看看