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

  FORUM HardWare.fr
  Programmation
  Javascript/Node.js

  [JS] formulaire de modification de données XML avec XPath

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[JS] formulaire de modification de données XML avec XPath

n°2317961
nabbo
Posté le 12-07-2018 à 22:44:06  profilanswer
 

Bonjour à tous,
 
je cherche à faire un formulaire HTML pour modifier du contenu XML, avec des champs (input/textarea/checkbox, etc) pour modifier certaines valeurs des fichiers XML, le tout en javascript.
 
L'idée est de mettre, dans chaque input, un attribut particulier qui contiendrait le xpath de la valeur recherchée dans le XML; laisser l'utilisateur modifier la valeur, et voir (en "temps réel" ) le XML se mettre à jour.
 
le problème : j'arrive, grace à XPath, à récupérer la valeur que je veux dans le XML, mais ensuite je n'arrive pas à mettre à jour le XML, parce que la valeur que je récupère via la fonction evaluate est une copie du noeud, et pas le noeud lui-même dans son contexte.
 
Le code :

Code :
  1. <script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
  2. <script>
  3. function updateXml(input) {
  4. newvalue = $(input).val();
  5. xmlStr = $("#xml" ).val();
  6. if(xmlStr=="" ) return;
  7. xmlObj = $.parseXML(xmlStr);
  8. xpath = $(input).attr('data-xpath');
  9. result = xmlObj.evaluate(xpath, xmlObj, null, XPathResult.ANY_TYPE, null);
  10. element = result.iterateNext();
  11.   //element est une copie du noeud, je n'arrive pas à le modifier...
  12.  
  13.   //ceci fonctionne, mais le chemin est "hardcodé"... je voudrais le calculer à partir du xpath...
  14. xmlObj.getElementsByTagName("person" )[0].getElementsByTagName("name" )[0].innerHTML = newvalue;
  15. var xmlText = new XMLSerializer().serializeToString(xmlObj);
  16. $("#xml" ).val(xmlText);
  17. }
  18. </script>
  19. <form>
  20. <input onkeyup="updateXml(this);" data-xpath="/person/name" />
  21. <textarea id="xml" style="width: 800px;height: 600px;">
  22. <?xml version="1.0" encoding="ISO-8859-1"?>
  23. <person>
  24.   <name>Paul</name>
  25.   <age>12</age>
  26. </person>
  27. </textarea>
  28. </form>


 
Est ce que vous avez une idée de comment retrouver le "element" dans l'arbre afin que je puisse le modifier et reconstruire le XML ?
ou alors une autre façon de faire?
 
merci
:jap:
 
PS : le XML est simplifié à l'extrème, en situation, il est évidemment plus complexe ; les valeurs ne sont pas toujours à la même profondeur, etc
PS1 : je ne peux pas mettre d'id aux noeuds de mon XML. En fait, je ne peux pas en choisir la structure.
PS2 : je ne fais qu'un interateNext(), je verrai comment faire quand il y aura plusieurs éléments à gérer.

mood
Publicité
Posté le 12-07-2018 à 22:44:06  profilanswer
 


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

  [JS] formulaire de modification de données XML avec XPath

 

Sujets relatifs
[HTML/PHP/CSS] Diff de 2 donnéesCréation base de données avec Entity code first
[Symfony 3.3.6] Récupération de donnéesAide pour Formulaire Personnalisé
[PHP / JS] Récupérer ligne txtFormulaire avec signature sur tablette
[HTML] Formulaire fonctionnel sur navigateur mais bugué sur instagram.Probleme de PHP Formulaire de contact
Formulaire Calcul HTML Javascript Help! 
Plus de sujets relatifs à : [JS] formulaire de modification de données XML avec XPath


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