`

利用Microsoft.XMLHTTP和Microsoft.XMLDOM实现xml文件的读取

 
阅读更多

var HTML = "";
var space = "";
var blank = "";
function getSubject()
{
var xmlDoc;
if(window.ActiveXObject)
{

//解决JavaScript请求跨域的问题
var xml = new ActiveXObject("Microsoft.XMLHTTP");
var xmlurl = appPath+'/standardocs/nav_getStandarXml.do';
//xml.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xml.open("post",xmlurl,false);
xml.send(null);
//debugger;

//获得操作的xml文件的对象
xmlDoc = new ActiveXObject('Microsoft.XMLDOM');
xmlDoc.async = false;
//xmlDoc.setProperty("SerpoverHTTPRequest", true);
//alert("ShareFileUrl:"+ShareFileUrl+"menu_XML.xml");
xmlDoc.load(xml.responseXML);

if(xmlDoc == null)
{
alert('您的浏览器不支持xml文件读取,于是本页面禁止您的操作,推荐使用IE5.0以上可以解决此问题!');
window.location.href='/index.do';
return;
}

//解析xml文件,判断是否出错
if(xmlDoc.parseError.errorCode != 0)
{
alert(xmlDoc.parseError.reason);
return;
}

//获得根接点
var nodes = xmlDoc.documentElement.childNodes;
//得到根接点下共有子接点个数,并循环
HTML="<table width=100% border=0 cellpadding=0 cellspacing=0 style='font-size:12px'>";
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));
}
}
HTML += "</table>";
//删除对象
delete(xmlDoc);

//显示HTML
var mainShow = document.getElementById("show");
mainShow.innerHTML = HTML;
return;
}
else if (document.implementation && document.implementation.createDocument)
{
xmlDoc=document.implementation.createDocument("","",null);

xmlDoc.async = false;
//alert("ShareFileUrl:"+ShareFileUrl);
xmlDoc.load("menu_XML.xml");

if (xmlDoc.documentElement.tagName != "parsererror") {
//获得根接点
var nodes = xmlDoc.documentElement.childNodes;
//得到根接点下共有子接点个数,并循环
HTML="<table width=100% border=0 cellpadding=0 cellspacing=0 style='font-size:12px'>";


for(var i=0; i<nodes.length; i++)
{
//如果接点名为 tree
//alert(nodes[i].nodeName);
if(nodes[i].nodeName == "tree")
{
readTree_firefox(nodes[i]);
}
//如果接点名为 node
else if(nodes[i].nodeName == "node")
{
readNode_firefox(nodes[i]);
}
}
HTML += "</table>";
//删除对象
delete(xmlDoc);

//显示HTML
var showDiv = document.getElementById("show");
showDiv.innerHTML = HTML;
return;


} else
{
alert("An Error Occurred");
}
}
else
{
alert('您的浏览器不支持该脚本!');
}

}


//读Tree节点
function readTree(cI)
{
var nodes = cI.childNodes;
var menuHTML = space;
var pdf_link = "standardPDF";

HTML += "<tr><td height=24";
if(cI.getAttribute("lv") == "1")
{
HTML += " bgcolor=#c8d6f1";
}else if(cI.getAttribute("lv") == "2")
{
HTML += " bgcolor=#dfe8f7";
}
//点击菜单事件,调用divshow(vid)函数
HTML += " onclick=javascript:divshow('"+cI.getAttribute("id")+"');";
HTML += " style='cursor:pointer'> ";

for(var j=0; j< cI.getAttribute("lv")-1; j++) {HTML += " "; }

menuHTML += blank;
//得到超级链接
//如果该节点的连接属性不为空,则连接


if(cI.selectNodes("link")(0).text != "")
{
menuHTML += "<a href='" +ShareFileUrl+ pdf_link + "/";
menuHTML += cI.selectNodes("link")(0).text;
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 += "'>";
}
//否则为空链接
else
{
//menuHTML += "#";
}

//得到节点的正文
menuHTML += cI.selectNodes("text")(0).text;

if(cI.selectNodes("link")(0).text != "")
{
menuHTML += "</a>";
}
//将menuHTML设置添加到HTML字符串
HTML += menuHTML;
HTML += "</td></tr>";
//得到该节点的属性值<span
HTML += "<tr><td>";
HTML += "<div id='"+cI.getAttribute("id")+"' ";
if(cI.getAttribute("lv") != "1" && cI.getAttribute("lv") == "2")
{
HTML += " style='display:none'";
}
HTML += ">/n";

HTML += "<table width=100% border=0 cellpadding=0 cellspacing=0 style='font-size:12px'>";
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 += "</table></div></td></tr>/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;
}

//读Tree节点
function readTree_firefox(cI)
{

var nodes = cI.childNodes;
var menuHTML = space;
var pdf_link = "standardPDF";


HTML += "<tr><td height=24";
if(cI.getAttribute("lv") == "1")
{
HTML += " bgcolor=#c8d6f1";
}else if(cI.getAttribute("lv") == "2")
{
HTML += " bgcolor=#dfe8f7";
}
//点击菜单事件,调用divshow(vid)函数
HTML += " onclick=javascript:divshow('"+cI.getAttribute("id")+"');";
HTML += " style='cursor:pointer'> ";

for(var j=0; j< cI.getAttribute("lv")-1; j++) {HTML += " "; }

menuHTML += blank;
//得到超级链接
//如果该节点的连接属性不为空,则连接

var cI_text = cI.getElementsByTagName("text")[0].textContent;
var cI_target = cI.getElementsByTagName("target")[0].textContent;
var cI_title = cI.getElementsByTagName("title")[0].textContent;
var cI_link = cI.getElementsByTagName("link")[0].textContent;


if(cI_link != "")
{
menuHTML += "<a href='" +ShareFileUrl+ pdf_link + "/";
menuHTML += cI_link;
menuHTML += "'";

//目标
if(cI_target != "")
{
menuHTML += " target='" + cI_target;
menuHTML += "'";
}
//点击菜单事件,调用divshow(vid)函数
//menuHTML += " onclick=javascript:divshow('"+cI.getAttribute("id")+"');";
//得到节点标题
menuHTML += " title='";
menuHTML += cI_title;
//结束
menuHTML += "'>";
}
//否则为空链接
else
{
//menuHTML += "#";
}

//得到节点的正文
menuHTML += cI_text;

if(cI_link != "")
{
menuHTML += "</a>";
}
//将menuHTML设置添加到HTML字符串
HTML += menuHTML;
HTML += "</td></tr>";
//得到该节点的属性值<span
HTML += "<tr><td>";
HTML += "<div id='"+cI.getAttribute("id")+"' ";
if(cI.getAttribute("lv") != "1" && cI.getAttribute("lv") == "2")
{
HTML += " style='display:none'";
}
HTML += ">/n";

HTML += "<table width=100% border=0 cellpadding=1 cellspacing=0 style='font-size:12px'>";
for(var i=0; i<nodes.length; i++)
{
var tempImg = "";
tempImg += blank;
if(nodes[i].nodeName == "tree")
{
space += tempImg;
readTree_firefox(nodes[i]);
space = "";
}
else if(nodes[i].nodeName == "node")
{
space += tempImg;
readNode_firefox(nodes[i]);
}
}
HTML += "</table></div></td></tr>/n";

return;
}

//读Node节点
function readNode_firefox(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)
{
var divObj = document.getElementById(vid);
if(divObj.style.display == "none")
{
divObj.style.display = "block";
}
else
{
divObj.style.display = "none";
}
return;
}

后台取得标准文档字符串代码

public void getStandarXml() throws Exception{
try{
response.setContentType("text/xml;charset=UTF-8");//让response以xml的形式进行请求
StandarXml standarxml = standarDocsManager.getStandarXML();
BufferedWriter wd = new BufferedWriter(new OutputStreamWriter(response.getOutputStream(), HTTP.UTF_8));
wd.write(standarxml.getStandarxml());//将xml写到前台
wd.flush();
}catch(Exception e){
e.printStackTrace();
}
}

分享到:
评论

相关推荐

    XML轻松学习手册--XML肯定是未来的发展趋势,不论是网页设计师还是网络程序员,都应该及时学习和了解

     好了,通过第三章的学习,我们已经了解了一些XML和DTD的基本术语,但是我们还不知道怎样来写这些文件,需要遵循什么样的语法,在下一章,将重点介绍有关撰写XML和DTD文档的语法。 第四章 XML语法 七.DTD的语法...

    使用JS读取XML文件的方法

    第一类,ie祖宗: js 提供用于创建 Automation对象的方法,new ActiveXObject(“Microsoft.XMLDOM”) ; 第二类:firefox,opera:用构造函数 DOMParser()实例化DOMParser对象,解析xml文本,并返回xml Document对象...

    第五章-AJAX.pptx

    了解AJAX,Ajax的工作原理,AJAX包含的技术 AJAX:(Asynchronous JavaScript and XML)并不是一项新技术,其实是多种技术的综合,包括Javascript、XHTML和CSS、DOM、XML和XMLHttpRequest. 服务器端语言:服务器需要...

    javascript完全学习手册2 源码

    9.2.3 Mozilla中XMLDOM支持 9.2.4 XMLDOM实例 9.3 XPath 9.3.1 XPath概述 9.3.2 IE中的XPath支持 9.3.3 Mozilla中的XPath支持 9.4 XSLT 9.4.1 XSLT概述 9.4.2 IE中的XSLT支持 9.4.3 MozilIa中XSLT...

    亮剑.NET深入体验与实战精要2

    7.6.2 通过Microsoft.XMLDOM调用Web Service 291 7.6.3 XMLHTTP POST调用Web Service 293 7.6.4 SOAP调用Web Service 293 7.7 WinForm如何调用Web Service 295 7.7.1 .NET的WinForm调用Web Service 295 7.7.2 手动...

    亮剑.NET深入体验与实战精要3

    7.6.2 通过Microsoft.XMLDOM调用Web Service 291 7.6.3 XMLHTTP POST调用Web Service 293 7.6.4 SOAP调用Web Service 293 7.7 WinForm如何调用Web Service 295 7.7.1 .NET的WinForm调用Web Service 295 7.7.2 手动...

    Ajax读取数据到表格的实现代码

    同时我还将展示,如何使用JavaScript脚本和Dom接口,来为网页创建一个表格 .将ajax请求的数据显示到该表格内. 本次的ajax实例效果中请求的服务端网页依然是:Web_ajax.Asp 该网页使用了Asp输出xml技术.如果你还...

    《程序天下:JavaScript实例自学手册》光盘源码

    19.12 JavaScript读取自身文件内的XML 19.13 将XML文件绑定到table 19.14 使用JavaScript加载XML文件 19.15 动态加载JavaScript文件 19.16 防止JavaScript文件被其他站直接引用 19.17 检查机器是否安装Word 19.18 ...

    程序天下:JavaScript实例自学手册

    19.12 JavaScript读取自身文件内的XML 19.13 将XML文件绑定到table 19.14 使用JavaScript加载XML文件 19.15 动态加载JavaScript文件 19.16 防止JavaScript文件被其他站直接引用 19.17 检查机器是否安装Word 19.18 ...

    Ajax课件学习(免费)

    AJAX:(Asynchronous JavaScript and XML)并不是一项新技术,其实是多种技术的综合,包括Javascript、XHTML和CSS、DOM、XML和XMLHttpRequest. •服务器端语言:服务器需要具备向浏览器发送特定信息的能力。Ajax与...

    jquery-1.1.3 效率提高800%

    选择器速度提升 选择器的速度大幅度提高了,下表为jQuery1.1.2和1.1.3的选择器速度对比,提高了8倍多 Browser jQuery 1.1.2 jQuery 1.1.3 % Improvement IE 6 4890ms 661ms 740% Firefox 2 5629ms 567...

    Ajax开始准备篇

    可以让你在你的网页中使用ajax技术实现,读取,添加,修改,删除数据的操作.也许你是只老鸟对我写的这些不屑一顾,但我还是希望你能看 下该教程中演示的一些例子,没准会有地方吸引你! 下面我们要做的有2点.第1...

Global site tag (gtag.js) - Google Analytics