如何获取xml中某个节点的值

如题所述

第1个回答  推荐于2018-03-22
1、用 childNodes 属性,按顺序取
  实现过程:首先创建一个 xml 对象,然后载入 xml 文件,再根据待取节点父节点在 xml 文件中的序号和本身的序号,确定待取节点的位置,最后返回待取节点的值。
  //pId 待取节点父节点序号
  //cId 待取节点序号
function getXmlNodeValue(pId, cId) {    
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");    
xmlDoc.async = false;
  xmlDoc.load("employeeInfo.xml");    
  var nodes = xmlDoc.documentElement.childNodes[pId].childNodes[cId];    return nodes.childNodes[0].text;  
}
调用方法:alert(getXmlNodeValue(1, 2));

2、用 for 循环来取

实现过程:首先创建一个 ie 支持的 xml 对象,如果发生异常,是创建一个 FireFox 支持的空 xml 对象并返回空;然后载入 xml 文件,如要发生异常也返回空;最后,通过 for 循环遍历查找与传入的节点值相同的节点,找到后返回属于该节点的属性值。
//nodeValue 待取节点的所属节点值
function getXmlNodeValueFor(nodeValue){
var xmlDoc; 
try {   
//创建一个 ie 支持的 XML 文档对象   
xmlDoc = new ActiveXObject("Microsoft.XMLDOM");  
}catch(e){    
try{      
//创建FireFox空的XML文档对象      
xmlDoc=document.implementation.createDocument("","",null);
    }catch(e){      
     alert(e.message);      
     return "";    
    }  
  }
  xmlDoc.async = false;
  try {   
   xmlDoc.load("employeeInfo.xml");  
  }catch(e){    
   alert(e.message);    
   return "";  
  }
  var xd=xmlDoc.documentElement.childNodes;  
  if(xd==null)
   return "";  
   var tempValue;
  for(var i=0;i<xd.length;i++){    
   if(xd[i].childNodes[0].childNodes[0].nodeValue==nodeValue)       tempValue=xd[i].childNodes[2].childNodes[0].nodeValue;  
  }  
  return tempValue;
}本回答被网友采纳
相似回答