js怎么获取xml里某个节点的值并输出

<video>
<file>
<![CDATA[要获取的值]]>
</file>
<size>31932541</size>
<seconds>380</seconds>
</video>

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("王佳琳"));

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-02-27

这个 ,在网上找到了你要的答案 ,经测试是可以使用的.


XML 文件(假设为“names.xml”,注意文件编码)

<?xml version="1.0" encoding="gbk"?>
<names>
<name>张三</name><name>李四</name><name>王五</name>
</names>

JavaScript 代码(需要放在 HTML 页面中,并在浏览器中执行)

//<script type="text/javascript">
//---- 加载 XML 文档的函数 ----
function loadXMLDoc(xmlFile){
    var xmlDoc;
    try{
        //Internet Explorer 可以使用其原生方法加载 XML
        xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
    }catch(e){
        try{
            //Firefox 也有标准方法,但可能造成其他浏览器报错,故省略
            //使用 XMLHttpRequest 替代,适用于大部分浏览器
            var xmlHttp=new XMLHttpRequest() ;
            xmlHttp.open("GET",xmlFile,false) ;
            xmlHttp.send(null) ;
            return xmlHttp.responseXML;
        }catch(e){
            return null;
        }
    }
    xmlDoc.async=false;
    xmlDoc.load(xmlFile);
    return xmlDoc;
}
//---- 解析 names.xml 的例子 ----
var xml=loadXMLDoc("names.xml");
//获取 XML 文档
var domElems=xml.getElementsByTagName("name");
//获取文档中"name"元素节点集合(数组)
var strNames=new Array(domElems.length);
//创建"strNames"数组用于存储"用户名"
for(var i=0;i<domElems.length;i++)
    strNames[i]=domElems[i].childNodes[0].data;
//取得"name"元素节点的子节点(文本节点)的数据,并存入"strNames"数组
alert(strNames.join());
//测试,输出"strNames"数组(预期结果:"张三,李四,王五")
//</script>

本回答被提问者和网友采纳
第2个回答  2014-09-04
用Jquery:$("#需要取值的ID").val()