Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Javascript/E4X计算XML片段中的节点数_Javascript_Xml_E4x_Mirth - Fatal编程技术网

使用Javascript/E4X计算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节点的数量 编辑:为了澄清,这个问题

考虑一下这个问题:

使用Javascript/E4X,在非浏览器使用场景(Javascript HL7集成引擎)中,有一个变量包含可能有多个重复节点的XML片段

<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();