主页 > 软件教程

js遍历获取xml中指定节点的值源代码

软件教程 2024-01-20

xml应用越来越广泛,用js遍历、取 xml 文件中指定节点的值等,是十分常规的操作。一般常用的获取方法有2种,一种是用 childNodes 属性按顺序取;另一种是用 for (或 foreach)循环来取。为了更直观,文章先列出一个待取指定节点的 xml 文件,然后再用2种方法来获取。

例如,待取值的xml文件如下:

<?xml version="1.0" encoding="utf-8"?>
<root>
<employee>
<name>李青青</name>
<sex>女</sex>
<birthday>1982-10-25</birthday>
</employee>
<employee>
<name>王佳琳</name>
<sex>女</sex>
<birthday>1985-11-18</birthday>
</employee>
<employee>
<name>秦凌云</name>
<sex>男</sex>
<birthday>1983-12-20</birthday>
</employee>
</root>

如果要取姓名为“王佳琳”的员工生日,该怎么取呢?

 

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

调用方法: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;
}

调用方法:getXmlNodeValueFor("王佳琳");


标签: js遍历获取xml中指定节点的值

电脑软硬件教程网 Copyright © 2016-2030 www.computer26.com. Some Rights Reserved.