脚本代码:实例解析Js+XML的操作方法

xiaoxiao2021-03-01  22

我的xml文件Login.xml如下. <? xmlversion="1.0"encoding="utf-8" ?> < Login > < Character > < C Text ="热血" Value ="0" ></ C > < C Text ="弱气" Value ="1" ></ C > < C Text ="激情" Value ="2" ></ C > < C Text ="冷静" Value ="3" ></ C > < C Text ="冷酷" Value ="4" ></ C > </ Character > < Weapon > < W Text ="光束剑" Value ="0" ></ W > < W Text ="光束配刀" Value ="1" ></ W > </ Weapon > < EconomyProperty > < P Text ="平均型" Value ="0" ></ P > < P Text ="重视攻击" Value ="1" ></ P > < P Text ="重视敏捷" Value ="2" ></ P > < P Text ="重视防御" Value ="3" ></ P > < P Text ="重视命中" Value ="4" ></ P > </ EconomyProperty > </ Login > 现在我需要对这个xml文件的内容进行操作. 首先,我们需要加载这个xml文件,js中加载xml文件,是通过XMLDOM来进行的. // 加载xml文档 loadXML = function (xmlFile){ var xmlDoc; if (window.ActiveXObject){xmlDoc = new ActiveXObject('Microsoft.XMLDOM');xmlDoc.async = false ;xmlDoc.load(xmlFile);} else if (document.implementation && document.implementation.createDocument){xmlDoc = document.implementation.createDocument('','', null );xmlDoc.load(xmlFile);} else { return null ;} return xmlDoc;}

xml文件对象出来了, 接下去我就要对这个文档进行操作了.比如说,我们现在需要得到节点Login/Weapon/W的第一个节点的属性,那么我们可以如下进行.

// 首先对xml对象进行判断 checkXMLDocObj = function (xmlFile){ var xmlDoc = loadXML(xmlFile); if (xmlDoc == null ){alert('您的浏览器不支持xml文件读取,于是本页面禁止您的操作,推荐使用IE5.0以上可以解决此问题 ! ');window.location.href = ' / Index.aspx';} return xmlDoc;} // 然后开始获取需要的Login/Weapon/W的第一个节点的属性值 var xmlDoc = checkXMLDocObj(' / EBS / XML / Login.xml'); var v = xmlDoc.getElementsByTagName('Login / Weapon / W')[ 0 ].childNodes.getAttribute('Text')

而我在我的程序中的写法是这样子的,当然我在程序中的写法是已经应用到实际中的了.一并给出来,以供查看

initializeSelect = function (oid,xPath){ var xmlDoc = checkXMLDocObj(' / EBS / XML / Login.xml'); var n; var l; var e = $(oid); if (e != null ){n = xmlDoc.getElementsByTagName(xPath)[ 0 ].childNodes;l = n.length; for ( var i = 0 ;i < l;i ++ ){ var option = document.createElement('option');option.value = n[i].getAttribute('Value');option.innerHTML = n[i].getAttribute('Text');e.appendChild(option);}}} 上面的访问代码中,我们是通过xmlDoc.getElementsByTagName(xPath)来进行的. 还可以通过xmlDoc.documentElement.childNodes(1)..childNodes(0).getAttribute('Text')进行访问. 一些常用方法: xmlDoc.documentElement.childNodes(0).nodeName,可以得到这个节点的名称. xmlDoc.documentElement.childNodes(0).nodeValue,可以得到这个节点的值. 这个值是来自于这样子的xml格式:<a>b</b>, 于是可以得到b这个值. xmlDoc.documentElement.childNodes(0).hasChild,可以判断是否有子节点 根据我的经验,最好是使用getElementsByTagName(xPath)的方法对节点进行访问,因为这样子可以直接通过xPath来定位节点,这样子会有更好的性能.
转载请注明原文地址: https://www.6miu.com/read-4150067.html

最新回复(0)