解決之道

          個(gè)人日記
          posts - 33, comments - 1, trackbacks - 0, articles - 7
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          [導(dǎo)入]javascript讀取xml

          Posted on 2008-07-31 14:53 閱讀(122) 評(píng)論(0)  編輯  收藏
          /**
          ?*?得到XML文件屬性的集合對(duì)象
          ?*?
          @param ?xmlDoc?XML對(duì)象
          ?*?
          @param ?name?屬性名稱?如:?user
          ?*?
          @return ?返回?Array?對(duì)象
          ?*?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;?????? // ?得到根節(jié)點(diǎn)
          ??var?rtn? = ? new ?Array();
          ??var?n?
          = ? 0 ;

          ??
          for (var?i = 0 ;?i < keys.length;?i ++ )?{
          ????var?childs?
          = ?node.childNodes;??????? // ?得到子節(jié)點(diǎn)
          ????var?key? = ?keys[i];
          ?
          for (var?k = 0 ;?k < childs.length;?k ++ )?{??????
          ???var?child?
          = ?childs[k];
          ???
          if (child.nodeName? == ?key)?{????? // ?判斷子節(jié)點(diǎn)是否符合
          ?? if (i? == ?keys.length - 1 )?{
          ??????????rtn[n]?
          = ?child;
          ????n
          ++ ;
          ??}?
          else ?{
          ????node?
          = ?child;
          ????
          break ;
          ??}
          ???}
          ?}
          ??}


          ??
          return ?rtn;
          }


          /**
          ?*?得到由getXMLArray函數(shù)得到對(duì)象中的值
          ?*?
          @param ?node?節(jié)點(diǎn)對(duì)象
          ?*?
          @param ?name?
          ?*?
          @return ?返回?String?
          ?
          */
          function?getValue(node,?name)?{
          ??var?keys?
          = ?name.split( ' . ' );
          ??
          ??
          for (var?i = 0 ;?i < keys.length;?i ++ )?{
          ????var?childs?
          = ?node.childNodes;??????? // ?得到子節(jié)點(diǎn)
          ????var?key? = ?keys[i];
          ?
          for (var?k = 0 ;?k < childs.length;?k ++ )?{??????
          ???var?child?
          = ?childs[k];
          ???
          if (child.nodeName? == ?key)?{????? // ?判斷子節(jié)點(diǎn)是否符合
          ?? if (child.childNodes.length? == ? 1 )?{?????????
          ????
          // ?如果沒有字節(jié)點(diǎn),返回值
          ???? return ?child.text;
          ??}?
          else ?{?????????????????????????????????
          ????
          // ?還有子節(jié)點(diǎn),繼續(xù)分析
          ????node? = ?child;
          ????
          break ;
          ??}
          ???}
          ?}
          ??}


          ??
          return ? "" ;
          }



          // ?測(cè)試:


          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\/> ' );
          }



          文章來源:http://www.aygfsteel.com/zhangrenquan/articles/89946.html

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 闵行区| 马龙县| 安徽省| 弥渡县| 茂名市| 桐庐县| 三穗县| 鄂托克前旗| 兴城市| 叙永县| 哈密市| 稻城县| 修文县| 麻栗坡县| 马山县| 海南省| 郯城县| 武宁县| 昌黎县| 贞丰县| 伊春市| 河西区| 贡山| 商丘市| 吴忠市| 肥东县| 嘉义县| 响水县| 仁怀市| 固原市| 郓城县| 壤塘县| 巴马| 阿城市| 德化县| 武城县| 横峰县| 苍溪县| 廉江市| 冷水江市| 和静县|