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

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 に答える
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 に答える