使用Javascript/E4X计算XML片段中的节点数
考虑一下这个问题: 使用Javascript/E4X,在非浏览器使用场景(Javascript HL7集成引擎)中,有一个变量包含可能有多个重复节点的XML片段使用Javascript/E4X计算XML片段中的节点数,javascript,xml,e4x,mirth,Javascript,Xml,E4x,Mirth,考虑一下这个问题: 使用Javascript/E4X,在非浏览器使用场景(Javascript HL7集成引擎)中,有一个变量包含可能有多个重复节点的XML片段 <pets> <pet type="dog">Barney</pet> <pet type="cat">Socks</pet> </pets> 巴尼 袜子 问题:如何获取Javascript/E4X中pet节点的数量 编辑:为了澄清,这个问题
<pets>
<pet type="dog">Barney</pet>
<pet type="cat">Socks</pet>
</pets>
巴尼
袜子
问题:如何获取Javascript/E4X中pet节点的数量
编辑:为了澄清,这个问题应该围绕着你。向未提供此信息的人致歉。我应该事先研究并发布这些信息。我想说。。。使用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”);
对于(变量i=0;i
使用DOM可以调用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 );
使用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();
//
//巴尼
//袜子
//
//初始化为与您的示例类似的XML
var petsXML=newxml(“”);
//构建XMLList
var-petList=petsXML['pet'];
//替代语法
//var petList=petsXML.pet;
//给定的pets节点下有多少个pet节点?
var length=petList.length();
Nice。然而,$
不是用于任意xml字符串,而是用于html。在这种特殊情况下,它会意外地工作。保证工作的是$(xmlDoc)
(即表示xmlstring
的DOM文档)。回答得很好!不幸的是,JQuery对我不可用,因为JS不在浏览器中,也不能引用外部库。无论如何,这个答案都会得到一个支持票!100%正确。find()用于元素,而不是文本,这在我的变量名中不是很清楚。我想我应该说得更清楚。.这很好。-1,您没有将length
属性用于jQuery
或getElementsByTagName()
.Ionut,我的两个代码示例都提供了操作pet节点的功能,而不仅仅是获取计数。这是因为编辑之前的原始问题说明了有关查找重复节点的内容。您至少可以访问DOM API吗?您不能这样做:petsXML.pet.length();当然可以,事实上我通常会这样做!我只是想把事情分开来澄清一下。pet(或['pet'])返回和XMLList对象,而length()是对该类型的方法调用。
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 );
//<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();