隨筆 - 154  文章 - 60  trackbacks - 0
          <2007年10月>
          30123456
          78910111213
          14151617181920
          21222324252627
          28293031123
          45678910

          聲明:

          該blog是為了收集資料,認識朋友,學習、提高技術,所以本blog的內容除非聲明,否則一律為轉載!!

          感謝那些公開自己技術成果的高人們!!!

          支持開源,尊重他人的勞動!!

          常用鏈接

          留言簿(3)

          隨筆分類(148)

          隨筆檔案(143)

          收藏夾(2)

          其他

          學習(技術)

          觀察思考(非技術)

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          以下是代碼片段:
          /**
           * 得到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\/>');
          }
          posted on 2007-10-09 09:49 lk 閱讀(472) 評論(0)  編輯  收藏 所屬分類: ajax&js
          主站蜘蛛池模板: 满城县| 扎兰屯市| 浠水县| 宁南县| 东源县| 广东省| 嘉义县| 灵丘县| 当雄县| 永善县| 巫山县| 南昌市| 乌鲁木齐县| 青海省| 洪湖市| 黔东| 罗江县| 绥棱县| 衡东县| 香港 | 剑河县| 阿城市| 金乡县| 军事| 惠安县| 三穗县| 米脂县| 南涧| 常熟市| 舒城县| 宜丰县| 卢氏县| 宜昌市| 蒙阴县| 诸城市| 新巴尔虎右旗| 盐城市| 余干县| 秀山| 黄平县| 徐汇区|