posts - 22,comments - 35,trackbacks - 0
          /**
          ?*?得到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中怎么辦呢?  回復  更多評論
            
          主站蜘蛛池模板: 涞水县| 扎兰屯市| 明光市| 驻马店市| 正宁县| 万宁市| 奉贤区| 松桃| 安吉县| 桃江县| 永仁县| 互助| 潼关县| 怀柔区| 洛川县| 津南区| 吉木乃县| 富蕴县| 庆城县| 唐河县| 淅川县| 巨鹿县| 白银市| 广宁县| 池州市| 交城县| 武隆县| 漳平市| 大荔县| 舒兰市| 大方县| 东乌珠穆沁旗| 武宣县| 康平县| 长岛县| 浏阳市| 建水县| 德昌县| 娱乐| 张家川| 苏尼特右旗|