Parser des éléments en fonction de la balise contenante? [JS/Xml] - Javascript/Node.js - Programmation
Marsh Posté le 10-06-2016 à 18:15:46
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
Marsh Posté le 10-06-2016 à 23:45:09
Merci pour ta réponse,
Je m'en suis finalement sorti en mixant JQuery et du Javascript classique:
$(xml).find("word" ).each( |
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
En attendant mes prochains soucis
Marsh Posté le 10-06-2016 à 09:47:35
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