Créer un xml document à partir d'un autre

Créer un xml document à partir d'un autre - XML/XSL - Programmation

Marsh Posté le 02-09-2013 à 15:42:32    

Bonjour,
 
j'ai un objet xml document contenant ceci :

Code :
  1. <racine>
  2.     <premierNoeud> Mon premier noeud </premierNoeud>
  3.     <secondNoeud>
  4.         <balise1> Ma première balise </balise1>
  5.         <balise2> Ma seconde balise </balise2>
  6.     </secondNoeud>
  7. </racine>


Ce que j'aimerais c'est créer un autre objet xml document qui contiendrait tout ce qu'il y a dans la balise "secondNoeud", à savoir :

Code :
  1. <balise1> Ma première balise </balise1>
  2. <balise2> Ma seconde balise </balise2>


Je comptais parcourir mon premier document xml et créer une chaîne de caractères contenant ce que je veux récupérer. Et ensuite je pensais transformer cette chaîne en document xml de la manière suivante :

Code :
  1. for(var k = 0; k < elt.childNodes.length; k++) //Avec elt l'élément correspondant à la balise "secondNoeud"
  2. {
  3.     var el = elt.childNodes[k];
  4.     if(el.nodeType == 1 && el.hasChildNodes() && el.tagName)
  5.         monXml += (new XMLSerializer()).serializeToString(el);
  6. }
  7. monXml = (new DOMParser()).parseFromString(monXml, "text/xml" );


J'aurais voulu savoir si vous aviez une méthode peut être plus simple et moins sujet à d'éventuelles erreurs de transformation et autre.  

Reply

Marsh Posté le 02-09-2013 à 15:42:32   

Reply

Marsh Posté le 02-09-2013 à 16:07:44    

As-tu regardé du coté de la méthode cloneNode de l'API dom ?
http://www.w3schools.com/dom/met_element_clonenode.asp
https://developer.mozilla.org/fr/do [...] .cloneNode


---------------
We deserve everything that's coming...
Reply

Marsh Posté le 02-09-2013 à 16:07:47    

XSLT ? La transformation que tu cherches à faire est triviale à exprimer en XSLT, et c'est certainement plus fiable que de passer par des concaténations de chaines de caractère.


---------------
Are you two fucking? Are you serious? Right in front of my salad?!
Reply

Marsh Posté le 02-09-2013 à 16:14:32    

Riokmij a écrit :

XSLT ? La transformation que tu cherches à faire est triviale à exprimer en XSLT, et c'est certainement plus fiable que de passer par des concaténations de chaines de caractère.


 
Avec XSLT, d'après ce que j'ai compris, on peut transformer un document XML à partir d'un XSL. Ce n'est pas ce que j'aimerais faire dans mon cas.

Reply

Marsh Posté le 02-09-2013 à 16:15:58    


 
J'avais complètement zappé cette méthode, je regarde ça de suite.

Reply

Marsh Posté le 02-09-2013 à 16:45:17    

qqn a écrit :


 
Avec XSLT, d'après ce que j'ai compris, on peut transformer un document XML à partir d'un XSL.


 
Oui, c'est ça, mais tu peux l'utiliser pour faire des transformations XML => XML, donc à moins que je n'aie pas du tout compris ton besoin, ça me semble correspondre à ton problème.


---------------
Are you two fucking? Are you serious? Right in front of my salad?!
Reply

Marsh Posté le 02-09-2013 à 17:12:42    

Riokmij a écrit :

XSLT ? La transformation que tu cherches à faire est triviale à exprimer en XSLT, et c'est certainement plus fiable que de passer par des concaténations de chaines de caractère.


C'est la méthode qui me semble la plus simple. XSLT permet de transformer un document XML via une feuille de styles XSL. Le document résultant peut-être n'importe quel type de fichier en fait : du XML, du XSL, du HTML, du RTF, du PDF...
 
Donc dans ton cas, ça marcherait tout à fait et ça serait très simple ;)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 02-09-2013 à 20:32:57    

et là ton 2ème document n'est pas vraiment un document XML compliant car 2 balises root

Reply

Marsh Posté le 03-09-2013 à 11:31:03    

Ben suffit qu'il mette une balise root pour encapsuler ses balises ;)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed