如何使用JavaScript从XML文档中提取值
问题描述:
我试图从xml文档中提取值并将其打印出来。 我也想算的孩子(子节点)的数量 每个节点has.That是第一个标签有2个孩子,第二个标签具有3如何使用JavaScript从XML文档中提取值
这是XML文档
<?xml version="1.0" ?>
<A>
<a1>a1</a1>
<a2>a2</a2>
<B>
<C>2</C>
<C>3</C>
</B>
<B>
<C>4</C>
<C>5</C>
<C>6</C>
</B>
</A>
本是我的JAVASCRIPT文档
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET","extractexample.xml",false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML;
xmlObj=xmlDoc.documentElement;
document.write(xmlDoc.getElementsByTagName("B")[0].childNodes[0].nodeValue);
答
Element.childNodes
方法返回所有类型的节点,包括空白文本节点。它可能不是你想要的。如果您只关心子元素的数量,请使用childElementCount
。
var b = xmlDoc.getElementsByTagName("B")[0];
alert(b.childElementCount); //should output 2
我还没有试过在IE中,它可能无法正常工作。 否则,如果您想要一个元素列表,请使用children
children
不支持非HTML文档。您可以尝试以下功能:
function getChildren(element) {
var nodes = element.childNodes;
var children = [];
for (var i = 0; i < nodes.length; i++) {
if (nodes[i].nodeType == Node.ELEMENT_NODE) children.push(nodes[i]);
}
return children;
}
getChildren(b).length;
您遇到的问题是什么? – slifty 2011-03-24 06:25:54
您是否获得了AJAX结果?我的意思是,XML文件在你的xmlhttp.responseXML中。用萤火虫检查。 – 2011-03-24 07:51:17
hi if i write document.write(xmlDoc.getElementsByTagName(“C”)。length);这将计数我得到输出的标签总数为5,这是正确的,但我想单独计算每个标签的子节点数。我不知道我应该为它写什么代码。 – 2011-03-24 07:59:02