js怎么获取xml里某个节点的值并输出
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js怎么获取xml里某个节点的值并输出相关的知识,希望对你有一定的参考价值。
<video>
<file>
<![CDATA[要获取的值]]>
</file>
<size>31932541</size>
<seconds>380</seconds>
</video>
1、用 childNodes 属性,按顺序取
实现过程:首先创建一个 xml 对象,然后载入 xml 文件,再根据待取节点父节点在 xml 文件中的序号和本身的序号,确定待取节点的位置,最后返回待取节点的值。
//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 待取节点的所属节点值
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("王佳琳"));
参考技术A这个 ,在网上找到了你要的答案 ,经测试是可以使用的.
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>本回答被提问者和网友采纳 参考技术B 用Jquery:$("#需要取值的ID").val()
js点击一个表格里的某个元素,获取该对象
比如我有一个表格
<table class="myTable" border="1">
<tr>
<td><a href="#" class="c">显示</a></td>
<td>row 1, cell 2</td>
</tr>
<tr>
<td><a href="#" class="c">显示</a></td>
<td>row 2, cell 2</td>
</tr>
</table>
我想单击某一行的“显示”链接,可以得到该链接对象。
方法是:先获取该表格对象
var tab = document.getElementById("myTable");
然后怎么写?
1.<a>标签直接加id,然后用getElementById
2.用onclick事件配合this直接传递给相关函数
我想说的是,我用ajax的dwr技术,修改后台数据库了之后,有个回调函数,在回调函数里,我要获取之前点击过的a标签对象。是这个意思。
参考技术B window.onload = function()var tab = document.getElementById('myTable');
tab.onclick = function(e)
var target = e.srcElement ? e.srcElement : e.target;
if (target.nodeName.toUpperCase === 'A')
alert(this.href);
return false;
追问
Uncaught TypeError: Cannot set property 'onclick' of null
追答editor需要是一个节点对象:
var editor = document.getElementById('editor');
没反应啊。不行的。
追答好吧,我的错。。。我看错问题了:
window.onload = function()var tab = document.getElementsByTagName('table')[0];
tab.onclick = function(e)
var target = e.srcElement ? e.srcElement : e.target;
if (target.nodeName.toUpperCase() === 'A')
alert(this.href);
return false;
参考技术C 在table里添加一个onclick事件,把event参数传进去,然后在js代码中这样写:function f_name(e)
var e1=e.srcElement || e.target;
这样就获得了事件源了,而且兼容各大浏览器追问
在table中增加onclick="f_name(this)"?
以上是关于js怎么获取xml里某个节点的值并输出的主要内容,如果未能解决你的问题,请参考以下文章