Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1550 connectés 

  FORUM HardWare.fr
  Programmation
  Javascript/Node.js

  [JS/Xml] Parser des éléments en fonction de la balise contenante?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[JS/Xml] Parser des éléments en fonction de la balise contenante?

n°2283455
potemkin
Optimisateur relativiste.
Posté le 10-06-2016 à 09:47:35  profilanswer
 

Bonjour,
 
Je bloque sur une opération semblant simple mais je ne trouve pas de méthode :/
 
J'ai un XML à parser, en utilisant JavaScript (JQuery), et Ajax sous la forme :
 

<categorieA>
       <element key="toto"> blabla </element>
       <element key="titi"> blabla </element>
        ...
</categorieA>
 
<categorieB>
       <element key="tutu"> blabla </element>
       <element key="tata"> blabla </element>
        ...
</categorieB>
 
       


 
Les noms de catégories sont nombreux et imprévisibles, pas d'incrémentation ou autre.
 
J'arrive en Ajax à récupérer tous les "éléments" ainsi que les key associés, de cette façon:
 

$.ajax({
        type: "GET",
        url: monFichier.xml,
        dataType: "xml",
        success: function (data) {
             
            parseXml(data);  
 
        }
    });
 
 
    function parseXml(xml) {
 
         
        $(xml).find("element" ).each(
                function () {
 
                    key = $(this).attr("key" );
                    value = $(this).text();
                });
               


 
 
Mais j'ignore comment récupérer les balises "mères", qui plus est pour chaque occurence.
 
Le but est de générer pour chaque entrée un objet item ayant pour attribut .key + .value + .category, du style:
 

$(xml).find("element" ).each(
                function () {
 
                    key = $(this).attr("key" );
                    value = $(this).text();
                    category =[b] ???[/b]
                });
               


 
Dans un tel cas il faudrait que category = "balise parente de mon 'element' ".
 
Sinon imbriquer 2 boucles .each mais je ne vois pas comment, puisque je ne peux faire de $(xml).find(???).each désignant une variable générique qui prendra tout ce qui passe?
 
Merci d'avance pour votre aide [:gaga jap]

mood
Publicité
Posté le 10-06-2016 à 09:47:35  profilanswer
 

n°2283485
SICKofitAL​L
misanthrope
Posté le 10-06-2016 à 18:15:46  profilanswer
 

Etant donné que tu retournes du XML, tu peux tjrs utiliser l'API de base liée au DOM.
Lors du success, il te renvoit un objet de type XMLDocument ou equivalent ( https://developer.mozilla.org/en-US [...] MLDocument ), pour peu que ton XLM dispose d'une racine, tu peux choper et boucler dans tes elements, genre :
XMLDocument.firstChild // root
XMLDocument.firstChild.childNodes // de type NodeList, on peut le transformer en itérable facilement via NodeIterator, il te suffit alors de prendre l'element qui vient
 
Bref bonne chance


---------------
We deserve everything that's coming...
n°2283490
potemkin
Optimisateur relativiste.
Posté le 10-06-2016 à 23:45:09  profilanswer
 

Merci pour ta réponse,
 
Je m'en suis finalement sorti en mixant JQuery et du Javascript classique:
 

$(xml).find("word" ).each(
                function () {
 
                    key = $(this).attr("name" );
                    value = $(this).text();
                    category = this.parentNode.nodeName;
                    addArray(key, value, category);
 
                });


 
this.parentNode.nodeName pointe bien sur le nom de la balise mère de l'élément "word" récupéré par la méthode .find :jap:
 
En attendant mes prochains soucis :D
 
:hello:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Javascript/Node.js

  [JS/Xml] Parser des éléments en fonction de la balise contenante?

 

Sujets relatifs
[noob JS] Equivalent JS des include/require?Jquery - Clone d'elements imbriqués [RESOLU]
[C#] Tableaux croisés dynamiques et Open XMLImporter une données balisé dans excel
[Java/NetBeans] ActionPerformed sur deux éléments "liés"Fonction "effacer contenu sur changement" sur 2 cellules
[QB64] Saisie d'un fonction dans un programme de mathsCakeBox ajout d'une fonction renommer
Fonction(s) pour récupérer chemins + titres de fichiers d'un dossier 
Plus de sujets relatifs à : [JS/Xml] Parser des éléments en fonction de la balise contenante?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR