我的博客园

.NET,Ajax,DataBase,Javascript
  博客园  :: 首页  :: 新随笔  :: 订阅 订阅  :: 管理

一个很基本的JS解析XML,实现下拉列表(转)

Posted on 2009-10-25 22:24  ymmt  阅读(846)  评论(0编辑  收藏  举报

转载一个通过解析XML文件为SELECT列表动态添加选项,只是这种方式是在页面加载的时候去为下拉列表添加选项,能不能在点击的时候再去请求下拉列表的内容呢?不用DIV等方式模拟能实现吗?

 

一个很基本的JS解析XML

Code
]1d6W%o+B'M\'c,{7a0<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">ITPUB个人空间z;HB4W$z1Oz
<HTML xmlns="http://www.w3.org/1999/xhtml">ITPUB个人空间$F ur9v3h2z
 <HEAD>ITPUB个人空间.ffiA*kv^9r3}p
  <TITLE> New Document </TITLE>
3qlQ/Y3v*Z0  <META. NAME="Generator" CONTENT="EditPlus">ITPUB个人空间m(yj&d1E
  <META. NAME="Author" CONTENT="">ITPUB个人空间I_]@"\)d;j g
  <META. NAME="Keywords" CONTENT="">ITPUB个人空间s{9Z*{0|*tB4t
  <META. NAME="Description" CONTENT="">
%dX#jt(@x0N0  <script. type='text/javascript'>ITPUB个人空间9bq%RT\?G
    loadXML = function(xmlFile){ITPUB个人空间%}+RP`6YD1y
        var xmlDoc;ITPUB个人空间 h5v;ZQ%d|
        //判断浏览器的类型
6r w/a#u(M CunB0        //支持IE浏览器
P4cl`B3LO!b`^H_0        if(window.ActiveXObject){ITPUB个人空间 F K7McM
            xmlDoc = new ActiveXObject("Microsoft.XMLDOM");ITPUB个人空间Z4l/u0\DE
            xmlDoc.async = false;ITPUB个人空间&ou[ w4qU2r
            xmlDoc.load(xmlFile);ITPUB个人空间c1j"o G9G*M `
        }
4s[re3_g0        //支持Mozilla浏览器
;cfaZ {6I,_$iN a|0        else if(document.implementation && document.implementation.createDocument){ITPUB个人空间5T[#HXC3N^8Y&~]
            xmlDoc = document.implementation.createDocument('','',null);ITPUB个人空间 V.wc&w-q4c.W
            xmlDoc.async = false;
){b ^N8PF*LF/e0            xmlDoc.load(xmlFile);
Q'w E Oo2vsw0        }ITPUB个人空间 zrwg.V~D
        else{ITPUB个人空间I i0CmOY
            return null;ITPUB个人空间1s |`*?2kt!uF
        }ITPUB个人空间%|{OA bFMiD
        return xmlDoc;
6f \Y q9wW-xY0    }

    //对xml对象进行判断ITPUB个人空间ck N!]%H*j~P|n \'_'r
    checkXMLDocObj = function(xmlFile){
'sH dX!|\ J0        var xmlDoc = loadXML(xmlFile);
:F8F\7f!~ I vU0        if(xmlDoc==null){
F R!h0gvC0            alert('您的浏览器不支持xml文件读取,于是本页面禁止您的操作,推荐使用IE5.0以上可以解决此问题!');ITPUB个人空间^X1^(AW-Y
            //window.location.href='某某地址(比如首页)';ITPUB个人空间%x skDv7Kd i,r
        }
&s}9lBQ+^ Fd X0        return xmlDoc;ITPUB个人空间 zgG,z1B
    }ITPUB个人空间V*}2I R0y6Y;xk
   ITPUB个人空间'Z3w'oN2rt9N
    //参数1:控件id号,参数2:理解为定位节点
*mc mX,QdD}0    initializeSelect = function(oid,xPath){ITPUB个人空间` u ~3{'}*r$A
        var xmlDoc = checkXMLDocObj('sqlInfo.xml');
,n WR5G I0        var n;ITPUB个人空间4N6F^x#B{)V
        var l;
(n:U0R(I+r!HU0        var e = document.getElementById(oid);//得到下拉列表框控件ITPUB个人空间sA|*I3N N#|*n$@#B
        if(e!=null){
,H:ZS$Bm*~M ^0            n = xmlDoc.getElementsByTagName(xPath);ITPUB个人空间.}'E5zW.n#P
            l = n.length;
io ^"Bx4h/A/}D9m:~0            //循环添加列表子项
+V"i pN j7v%g0            for(var i=0;i<l;i++){
#Yv k0O Bm1v0                var ption = document.createElement('option');
|h _z)`I |0                option.innerText =  n[i].firstChild.text;
]0Gd OC;E%u6k0                option.value = n[i].lastChild.text;ITPUB个人空间;gcE;?@5m_
                e.appendChild(option);ITPUB个人空间"m4qhph~Y[^*A-C$B
            }
3r u.xA1?K[S5~0        }
+i3mB"WMRy0    }
z+F6? MKY6s0  </script>ITPUB个人空间HM4GO? Tx:A
 </HEAD>

 <BODY nload="initializeSelect('company','Company')">ITPUB个人空间0B7OzUf)A?/N
  <select id='company' name='company'>
TkvJ z6B:p2N0    <option selected='selected'></option>ITPUB个人空间6k]o+Dm-ix
  </select>
~;f Ad~+wOrm0 </BODY>
ED(} XsIo0</HTML>

 

附上XML测试文件

CodeITPUB个人空间5oS },Aa6k
<?xml version="1.0" encoding="utf-8" ?>
;`#I*]$D6cj*u2ju0<DongFang>ITPUB个人空间4Y5bM|g*n(^t
  <Company>ITPUB个人空间3Gr-RrP9k
    <cNname>1</cNname>
a iD$? g-_c0    <cIP>1</cIP>ITPUB个人空间m](E mo(@
  </Company>
u)hav9P4V u0  <Company>
yxp6d:n4k0    <cNname>2</cNname>ITPUB个人空间j!D;H5YD'^~6?A
    <cIP>2</cIP>
r"@}+d"\0  </Company>   ITPUB个人空间"E:rdv*]Qnv
  <Company>
+Glo{.tT0    <cNname>3</cNname>
9wQ4} Lhz K9{0    <cIP>3</cIP>
4{i f)nbNsr#qAW0  </Company>
%D:Y^_l wL$d0  <Company>ITPUB个人空间K&~/gX-V.t
    <cNname>4</cNname>ITPUB个人空间5P"B0t,W"a
    <cIP>4</cIP>
mq~ ida5Y0  </Company>ITPUB个人空间t%x,b+U3Z X;yro2F
  <Company>ITPUB个人空间"j5} H!w.h*~Wf
    <cNname>5</cNname>ITPUB个人空间+U G`\#R Q5q
    <cIP>5</cIP>
a'S$k3bh0  </Company>
/u-lVV s0  <Company>
@s\+} }?0    <cNname>6</cNname>
`;b$R1Rj0    <cIP>6</cIP>
FG]F'h0  </Company>
u | Y,O5z1{*v:R7A+A0</DongFang>

hello everyone!