六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 119|回复: 0

java script 读取xml (转贴)

[复制链接]

升级  51.33%

35

主题

35

主题

35

主题

秀才

Rank: 2

积分
127
 楼主| 发表于 2013-2-7 21:03:04 | 显示全部楼层 |阅读模式
首先:xml文件(tree.xml)内容如下:
<?xml version="1.0" encoding="gb2312"?> <treeview> <tree id="p1"> <text>山东省</text> <target>_blank</target> <title>省份</title> <link></link> <tree id="p1-1"> <text>威海市</text> <target>_blank</target> <title>城市</title> <link></link> </tree> <tree id="p1-2"> <text>烟台市</text> <target>_blank</target> <title>城市</title> <link></link> <node id="p1-2-1"> <text>长夼村</text> <target>_blank</target> <title>乡镇</title> <link>http://www.baidu.com/</link> </node> </tree> <node id="p1-3"> <text>富镇</text> <target>_blank</target> <title>乡镇</title> <link>http://www.baidu.com/</link> </node> </tree> <tree id="p2"> <text>河北省</text> <target>_blank</target> <title>省份</title> <link></link> <tree id="p2-1"> <text>泊头市</text> <target>_blank</target> <title>城市</title> <link></link> <node id="p2-1-1"> <text>郊河</text> <target>_blank</target> <title>乡镇</title> <link>http://www.baidu.com/</link> </node> </tree> <tree id="p2-2"> <text>石家庄</text> <target>_blank</target> <title>城市</title> <link></link> </tree> </tree> <tree id="p3"> <text>浙江省</text> <target>_blank</target> <title>省份</title> <link></link> <tree id="p3-1"> <text>杭州市</text> <target>_blank</target> <title>城市</title> <link></link> <node id="p3-1-1"> <text>某镇</text> <target>_blank</target> <title>乡镇</title> <link>http://www.baidu.com/</link> </node> </tree> <tree id="p3-2"> <text>温州市</text> <target>_blank</target> <title>城市</title> <link></link> <node id="p3-2-1"> <text>某镇</text> <target>_blank</target> <title>乡镇</title> <link>http://www.baidu.com/</link> </node> </tree> </tree> </treeview>
//////////////////////////////////////////////////////
然后:javascript函数实现:(文件名称:tree.htm)
<script Language="JavaScript"> var HTML = ""; var space = ""; var blank = "  "; function getSubject() { var xmlDoc; if(window.ActiveXObject) { //获得操作的xml文件的对象 xmlDoc = new ActiveXObject('Microsoft.XMLDOM'); xmlDoc.async = false; xmlDoc.load("tree.xml"); if(xmlDoc == null) { alert('您的浏览器不支持xml文件读取,于是本页面禁止您的操作,推荐使用IE5.0以上可以解决此问题!'); window.location.href='/Index.aspx'; return; } } //解析xml文件,判断是否出错 if(xmlDoc.parseError.errorCode != 0) { alert(xmlDoc.parseError.reason); return; } //获得根接点 var nodes = xmlDoc.documentElement.childNodes; //得到根接点下共有子接点个数,并循环 for(var i=0; i<nodes.length; i++) { //如果接点名为 tree if(nodes(i).nodeName == "tree") { readTree(nodes(i)); } //如果接点名为 node else if(nodes(i).nodeName == "node") { readNode(nodes(i)); } } //删除对象 delete(xmlDoc); //显示HTML window.show.innerHTML = HTML; return; } //读Tree节点 function readTree(cI) { var nodes = cI.childNodes; var menuHTML = space; menuHTML += blank; //得到超级链接 menuHTML += "<a href='"; //如果该节点的连接属性不为空,则连接 if(cI.selectNodes("link")(0).text != "") { menuHTML += cI.selectNodes("link")(0).text; } //否则为空链接 else { menuHTML += "#"; } //目标 if(cI.selectNodes("target")(0).text != "") { menuHTML += " target='"+cI.selectNodes("target")(0).text; menuHTML += "'"; } //点击菜单事件,调用divshow(vid)函数 menuHTML += " onclick=javascript:divshow('"+cI.getAttribute("id")+"');"; //得到节点标题 menuHTML += " title='"; menuHTML += cI.selectNodes("title")(0).text; //结束 menuHTML += "'>"; //得到节点的正文 menuHTML += cI.selectNodes("text")(0).text; menuHTML += "</a><br>\n"; //将menuHTML设置添加到HTML字符串 HTML += menuHTML; //得到该节点的属性值<span HTML += "<div id='"+cI.getAttribute("id")+"' style='display:none'>\n"; for(var i=0; i<nodes.length; i++) { var tempImg = ""; tempImg += blank; if(nodes(i).nodeName == "tree") { space += tempImg; readTree(nodes(i)); space = ""; } else if(nodes(i).nodeName == "node") { space += tempImg; readNode(nodes(i)); } } HTML += "</div>\n"; return; } //读Node节点 function readNode(cI) { var nodeHTML = space; nodeHTML += blank; //设置超级链接 nodeHTML += "<a href='"; //得到连接地址 nodeHTML += cI.selectNodes("link")(0).text; //目标 if(cI.selectNodes("target")(0).text != "") nodeHTML += "' target='"+cI.selectNodes("target")(0).text; //得到节点标题 nodeHTML += "' title='"; nodeHTML += cI.selectNodes("title")(0).text; //结束 nodeHTML += "'>"; //得到节点的正文 nodeHTML += cI.selectNodes("text")(0).text; nodeHTML += "</a><br>\n"; HTML += nodeHTML; //HTML += "<div id='"+cI.getAttribute("id")+"'>"; space = ""; return; } //操作对象的显示还是隐藏效果 function divshow(vid) { if(document.all[vid].style.display == "none") { document.all[vid].style.display = "block"; } else { document.all[vid].style.display = "none"; } return; } </script>


<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>JS_XML</title> <style type="text/css"> <!-- body { margin-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; font-size: 9pt; } A { text-decoration:none; font-family: "宋体"; font-size: 9pt; COLOR:#000000; } --> </style> </head> <body bgcolor="#EEEEEE" leftmargin="0" topmargin="0"> <div id=show></div> </body> <script> getSubject() </script> </html>

运行,要在同一个路径下!
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表