6
votes

Comptez le nombre de nœuds dans un extrait XML à l'aide de JavaScript / E4X

Considérez ce problème:

Utilisation JavaScript / E4X, dans un scénario d'utilisation sans navigateur (un moteur d'intégration HL7 JavaScript HL7), il existe une variable détenant un extrait XML qui pourrait avoir plusieurs nœuds répétés. xxx

question : Comment obtenir le nombre de nœuds de PET dans JavaScript / E4X?

EDIT: Clarifiez, cette question devrait être autour E4X (ECMAScript pour XML) . Toutes mes excuses à ceux qui ont répondu sans ces informations. J'aurais dû rechercher et posté cette information à l'avance.


1 commentaires

Avez-vous au moins accès à une API DOM?


3 Réponses :


3
votes

Je dirais ... Utilisez jQuery!

      var pets= xmlDoc.getElementsByTagName("pet");
      for ( var i = 0; i < pets.length ; i++ )
      {
          count++;
         // var petObj = {
         //     pets[i].getAttribute("type")
         //  };
      }


5 commentaires

Agréable. Toutefois, $ n'est pas destiné aux chaînes XML arbitraires, elle est destinée à HTML. Cela fonctionne par accident dans ce cas particulier. Garanti au travail est $ (xmldoc) (c'est-à-dire le document DOM représentant xmlstring ).


Très bonne réponse! Malheureusement, JQuery n'est pas disponible pour moi, car le JS n'est pas dans un navigateur ou n'est pas capable de faire référence à des bibliothèques externes. Cette réponse obtient de toute façon une uppote!


100% correct. Trouver () fonctionne sur des éléments, pas du texte, qui n'est pas trop clair de mon nom de variable. Je suppose que je devrais rendre cela plus clair .. bon appel.


-1, vous n'avez pas utilisé la propriété avec jQuery ou getelementsbytagname () .


Ionut, les deux échantillons de code fournis pour manipuler les nœuds pour animaux de compagnie au lieu de simplement obtenir le compte. C'est parce que la question initiale avant la modification a déclaré quelque chose à propos de la recherche de nœuds en double.



3
votes

Utiliser le DOM, vous pouvez appeler getelementsbytagname () . xxx

plus d'informations:

https://developer.mozilla.org/fr/dom olyement.getelementsbytagname

vous «Regez au besoin d'obtenir le document XML en quelque sorte. XHR, par exemple, renvoie des documents comme analysé xml. xxx


0 commentaires

5
votes

Utilisez un objet XX XML pour créer un xmllist de vos nœuds 'PET'. Vous pouvez ensuite appeler la méthode de longueur sur le xmllist.

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


2 commentaires

Ne pouvez-vous pas faire: petsxml.pet.length ();


Absolument, et en fait je ferais normalement cela! Je voulais juste casser des choses à clarifier que .Pet (ou ['PET']) Retours et objet XMllist, et cette longueur () est une méthode appelée à ce type.