js解析xml 详细讲解 简单例题

 我的xml文件Login.xml如下:

  1. <?xml version="1.0" encoding="utf-8" ?> 
  2. <Login> 
  3.     <City> 
  4.         <C Text="西安" Value="0"></C> 
  5.         <C Text="延安" Value="1"></C> 
  6.         <C Text="宝鸡" Value="2"></C> 
  7.     </City> 
  8.     <student> 
  9.         <W Text="学生1" Value="0"></W> 
  10.         <W Text="学生2" Value="1"></W> 
  11.     </student> 
  12. </Login>

 

现在我需要对这个xml文件的内容进行操作.
首先,我们需要加载这个xml文件,js中加载xml文件,是通过XMLDOM来进行的.

 

  1. // 加载xml文档 
  2. loadXML    = function(xmlFile) 
  3.     var xmlDoc; 
  4.     if(window.ActiveXObject) 
  5.     { 
  6.         xmlDoc    = new ActiveXObject('Microsoft.XMLDOM'); 
  7.         xmlDoc.async    = false
  8.         xmlDoc.load(xmlFile); 
  9.     } 
  10.     else if (document.implementation&&document.implementation.createDocument) 
  11.     { 
  12.         xmlDoc    = document.implementation.createDocument(''''null); 
  13.         xmlDoc.load(xmlFile); 
  14.     } 
  15.     else 
  16.     { 
  17.         return null
  18.     } 
  19.      
  20.     return xmlDoc; 


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

 

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


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

查看

  1. initializeSelect    = function(oid, xPath) 
  2.     var xmlDoc    = checkXMLDocObj('/EBS/XML/Login.xml'); 
  3.     var n; 
  4.     var l; 
  5.     var e    = $(oid); 
  6.     if(e!=null
  7.     { 
  8.         n    = xmlDoc.getElementsByTagName(xPath)[0].childNodes; 
  9.         l    = n.length; 
  10.         for(var i=0; i<l; i++) 
  11.         { 
  12.             var option    = document.createElement('option'); 
  13.             option.value    = n[i].getAttribute('Value'); 
  14.             option.innerHTML    = n[i].getAttribute('Text'); 
  15.             e.appendChild(option); 
  16.         } 
  17.     } 

 

 


上面的访问代码中,我们是通过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来定位节点,这样子会有更好的性能.

 

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页