js如何遍历取得xml中每个字节点的值

 我来答
Baby_原來
2018-08-22 · TA获得超过3402个赞
知道大有可为答主
回答量:1535
采纳率:94%
帮助的人:504万
展开全部

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;
}

//调用方法:
alert(getXmlNodeValueFor("王佳琳"));
caolaihao
2018-08-22 · 超过54用户采纳过TA的回答
知道小有建树答主
回答量:117
采纳率:78%
帮助的人:46.3万
展开全部
教你个简单的方法,直接去npm或者github上找一款js库。例如xml2js(我刚刚随便找的),这个库能提供API给你将xml装成js object,转成object之后你想怎么玩就怎么玩。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式