考虑这个问题:
在非浏览器使用场景(Javascript HL7集成引擎)中使用Javascript / E4X,有一个变量包含一个可能有多个重复节点的XML片段。
<pets>
<pet type="dog">Barney</pet>
<pet type="cat">Socks</pet>
</pets>
问题:如何获取Javascript / E4X中宠物节点数的计数?
编辑:澄清一下,这个问题应该在E4X (ECMAScript for XML)左右。向没有这些信息的人回答道歉。我应该研究和研究事先发布了此信息。
答案 0 :(得分:5)
使用E4X XML对象构建“宠物”节点的XMLList。然后,您可以在XMLList上调用length方法。
//<pets>
// <pet type="dog">Barney</pet>
// <pet type="cat">Socks</pet>
//</pets>
// initialized to some XML resembling your example
var petsXML = new XML("");
// build XMLList
var petList = petsXML['pet'];
// alternative syntax
// var petList = petsXML.pet;
// how many pet nodes are under a given pets node?
var length = petList.length();
答案 1 :(得分:3)
我会说...使用jQuery!
var count = 0;
$(xmlDoc).find("pet").each(function() {
count++;
// do stuff with attributes here if necessary.
// var pet = $(this);
// var myPetType = pet.attr("type");
};
});
编辑:不能使用jquery ...好吧,让我们在常规的javascript中做:(
var pets= xmlDoc.getElementsByTagName("pet");
for ( var i = 0; i < pets.length ; i++ )
{
count++;
// var petObj = {
// pets[i].getAttribute("type")
// };
}
答案 2 :(得分:3)
使用DOM,您可以调用getElementsByTagName()
。
alert( document.getElementsByTagName( "pet" ).length );
更多信息:
https://developer.mozilla.org/en/DOM:element.getElementsByTagName
您需要以某种方式获取XML文档。例如,XHR将文档作为已解析的XML返回。
var xhr = new XMLHttpRequest();
xhr.open( 'GET', 'http://domain.com/pets.xml', true );
xhr.onreadystatechange = function ( e ) {
if ( xhr.readyState == 4 && xhr.status == 200 )
alert( xhr.responseXML.getElementsByTagName( "pet" ).length );
};
xhr.send( null );