posts - 22,comments - 35,trackbacks - 0
          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          常用鏈接

          留言簿(4)

          我參與的團隊

          隨筆分類(25)

          文章分類(148)

          收藏夾(6)

          我的連接

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          /**
          ?*?得到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 2006-12-25 17:12 kelven 閱讀(1248) 評論(1)  編輯  收藏 所屬分類: JavaScript

          FeedBack:
          # re: javascript讀取xml
          2007-12-14 13:20 | 路過
          那在firefox中怎么辦呢?  回復  更多評論
            
          主站蜘蛛池模板: 富平县| 谢通门县| 九台市| 大丰市| 紫阳县| 临武县| 南靖县| 积石山| 周宁县| 阳东县| 汾阳市| 依兰县| 桓台县| 达尔| 阳高县| 青州市| 武穴市| 合阳县| 博湖县| 新平| 台东县| 达拉特旗| 平陆县| 元朗区| 洪洞县| 沙田区| 乳山市| 郎溪县| 德令哈市| 钟祥市| 曲阳县| 江陵县| 清河县| 抚州市| 海兴县| 开封市| 屏山县| 罗平县| 成安县| 张家川| 香港|