怎么样使用XML实现无限级的省、市、区、县动态关联?
default.htm ------------------------------------------------------------------- <html> <head> <title>用XML实现无限级的(国家)盛市、区、县的动态关联</title> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <link rel="stylesheet" href="Common/style.css"> <script language=javascript> //________________________________________________________________ //**************************************************************** // ╭═══════════════════════════════╮ // ║ 模块名称:用XML实现无限级的(国家)盛市、区、县的动态关联 ║ // ║ 作者:发仔║ // ║ 电子邮件:chenjf2k@163.com ║ // ║ 演示地址:http://www.971411.com/test/default.htm ║ // ╰═══════════════════════════════╯ //**************************************************************** var oOrgData; var orgID=""; var nodeParentOrg; var nodesEqualOrg; var nodesChildOrg; function window.onload(){ oOrgData = OrgData.XMLDocument.documentElement; var newOrgID = "" if (newOrgID!=""){ orgID = newOrgID; } else{ if (oOrgData.childNodes.length>0){ orgID = oOrgData.childNodes.item(0).getAttribute("编号"); } } gotoOrg(); } function gotoOrg(){ checkBtnAble(); showOrgList(); showPage(); } function GoToParentOrgID(){ orgID = nodeParentOrg.getAttribute("编号") gotoOrg();} function GoToChildOrgID(){ orgID = nodesChildOrg.item(0).getAttribute("编号") gotoOrg(); } function showOrgList(){ removeItem(); var oOption; for(num=0;num<nodesEqualOrg.length;num++){ oOption = document.createElement("OPTION"); oOption.text=" "+nodesEqualOrg.item(num).getAttribute("名称"); oOption.value=nodesEqualOrg.item(num).getAttribute("编号"); if(oOption.value==orgID) oOption.selected=true; orgList.add(oOption); } } function showPage(){ if (orgList.options.length>0){ orgID = orgList.options[orgList.selectedIndex].value; // window.top.mainFrame.location.href='main.asp?orgID='+orgID; checkBtnAble(); } else{ // window.top.mainFrame.location.href='main.asp'; } } function removeItem(){ if (orgList.options.length>0){ for (i = orgList.options.length - 1; i >= 0; --i){ orgList.remove(i); } } } function checkBtnAble(){ var parentOrgID; if(orgID.length==3){ parentOrgID="000"; } else{ parentOrgID=orgID.substring(0,orgID.length-3) } nodeParentOrg = oOrgData.selectSingleNode("机构[@编号='"+parentOrgID+"']") if (nodeParentOrg==null){ btnParentOrgID.disabled=true; } else{ btnParentOrgID.disabled=false; } nodesEqualOrg = oOrgData.selectNodes("机构[@上级编号='"+parentOrgID+"']") nodesChildOrg = oOrgData.selectNodes("机构[@上级编号='"+orgID+"']") if (nodesChildOrg.length==0){ document.all.btnChildOrgID.disabled=true; } else{ document.all.btnChildOrgID.disabled=false; } } </script> <style> input {HEIGHT: 20px;border: 2px outset; background-color: #005D99; border-color: #FFFFFF; font-size: 10pt;color: #FFFFFF} select {HEIGHT: 20px; background-color: #E6F7EE; font-size: 10pt;color: #000000} td {font-size:10pt} </style> </head> <body bgcolor="#FFFFFF" text="#000000" marginheight="0" topmargin="6"> <xml id="OrgData" src="Orglist.xml"></xml> <table width="100%" border="0" cellpadding="0" cellspacing="0"> <tr> <td bgcolor="005D99" height="30"><font color="#FFFFFF"> 当前操作单位:</font> <input type="button" value="<<" onClick="GoToParentOrgID()" id="btnParentOrgID" title="返回上一级管理" disabled> <select id="orgList" style="WIDTH: 475px;" title="请选择当前操作单位" onChange="javascript:showPage()"> </select> <input type="button" value=">>" onClick="GoToChildOrgID()" id="btnChildOrgID" title="进入下一级管理" disabled> </td> </tr> </table> </body> </html> OrgList.xml [以下只简单列举几个单位] -------------------------------------------------------------- <?xml version="1.0" encoding="gb2312"?> <机构列表> <机构 编号="001" 名称="福建省" 上级编号="000"/> <机构 编号="001001" 名称="福建省->省机关" 上级编号="001"/> <机构 编号="001001016" 名称="福建省->省机关->办公室" 上级编号="001001"/> <机构 编号="001001017" 名称="福建省->省机关->科研所" 上级编号="001001"/> <机构 编号="001001018" 名称="福建省->省机关->信息处" 上级编号="001001"/> <机构 编号="001002" 名称="福建省->福州市" 上级编号="001"/> <机构 编号="001002021" 名称="福建省->福州市->局机关" 上级编号="001002"/> <机构 编号="001002021001" 名称="福建省->福州市->局机关->局领导" 上级编号="001002021"/> <机构 编号="001002021002" 名称="福建省->福州市->局机关->办公室" 上级编号="001002021"/> <机构 编号="001002021003" 名称="福建省->福州市->局机关->计财室" 上级编号="001002021"/> <机构 编号="001002005" 名称="福建省->福州市->仓山区" 上级编号="001002"/> <机构 编号="001002006" 名称="福建省->福州市->鼓楼区" 上级编号="001002"/> <机构 编号="001002001" 名称="福建省->福州市->台江区" 上级编号="001002"/> <机构 编号="001002004" 名称="福建省->福州市->晋安区" 上级编号="001002"/> <机构 编号="001002010" 名称="福建省->福州市->闽侯县" 上级编号="001002"/> <机构 编号="001002015" 名称="福建省->福州市->开发区" 上级编号="001002"/> <机构 编号="001002012" 名称="福建省->福州市->闽清县" 上级编号="001002"/> <机构 编号="001002011" 名称="福建省->福州市->永泰县" 上级编号="001002"/> <机构 编号="001002007" 名称="福建省->福州市->长乐市" 上级编号="001002"/> <机构 编号="001002018" 名称="福建省->福州市->连江县" 上级编号="001002"/> <机构 编号="001002017" 名称="福建省->福州市->福清市" 上级编号="001002"/> <机构 编号="001002016" 名称="福建省->福州市->平潭县" 上级编号="001002"/> <机构 编号="001002008" 名称="福建省->福州市->罗源县" 上级编号="001002"/> <机构 编号="001002020" 名称="福建省->福州市->琅岐分局" 上级编号="001002"/> <机构 编号="001003" 名称="福建省->厦门市" 上级编号="001"/> <机构 编号="001003015" 名称="福建省->厦门市->市局机关" 上级编号="001003"/> <机构 编号="001003012" 名称="福建省->厦门市->直征局" 上级编号="001003"/> <机构 编号="001003013" 名称="福建省->厦门市->外税分局" 上级编号="001003"/> <机构 编号="001003014" 名称="福建省->厦门市->稽查分局" 上级编号="001003"/> <机构 编号="001003016" 名称="福建省->厦门市->信息技术分局" 上级编号="001003"/> <机构 编号="001003002" 名称="福建省->厦门市->开元区局" 上级编号="001003"/> <机构 编号="001003003" 名称="福建省->厦门市->思明区局" 上级编号="001003"/> <机构 编号="001003006" 名称="福建省->厦门市->湖里区局" 上级编号="001003"/> <机构 编号="001003007" 名称="福建省->厦门市->集美区局" 上级编号="001003"/> <机构 编号="001003008" 名称="福建省->厦门市->杏林区局" 上级编号="001003"/> <机构 编号="001003009" 名称="福建省->厦门市->海沧投资区局" 上级编号="001003"/> <机构 编号="001003011" 名称="福建省->厦门市->同安区局" 上级编号="001003"/> <机构 编号="001003004" 名称="福建省->厦门市->鼓浪屿区局" 上级编号="001003"/> <机构 编号="001003017" 名称="福建省->厦门市->税务学会" 上级编号="001003"/> </机构列表> 摘自:http://topic.csdn.net/t/20050102/13/3694194.html