6

考虑这个问题:

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

<pets>       
 <pet type="dog">Barney</pet>
 <pet type="cat">Socks</pet>
</pets>

问题:如何获取 Javascript/E4X 中宠物节点的数量?

编辑:为了澄清,这个问题应该围绕E4X (ECMAScript for XML)。向那些在没有此信息的情况下回答的人道歉。我应该事先研究并发布此信息。

4

3 回答 3

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();
于 2009-07-22T03:09:23.823 回答
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")
         //  };
      }
于 2009-07-21T22:43:36.850 回答
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 );  
于 2009-07-21T22:46:39.107 回答