Comment manipuler un XML déjà en mémoire via une routine en javascript?
zazalamouche
Messages postés3Date d'inscriptionvendredi 19 décembre 2008StatutMembreDernière intervention22 décembre 2008
-
19 déc. 2008 à 22:53
Bul3
Messages postés4933Date d'inscriptionsamedi 1 juillet 2006StatutMembreDernière intervention 2 février 2015
-
22 déc. 2008 à 17:49
Voici quelques info sur mon problème:
J'ai un fichier XML qui contient des données et un fichier XSL qui contient le format d'affichage
Le XML référence le XSL. En ouvrant le XML, je lance donc l'affichage du contenu de celui-ci en utilisant le format défini dans le XSL
Dans le XSL, il y a des textarea pour saisir des infos et un bouton qui permet de lancer une fonction en javascript qui est localisée dans un fichier .js référencé dans le XSL
Voici ce que je souhaite faire:
Suite à l'appui sur le bouton, je souhaite enregistrer (via la fonction en javascript) les modifications apportées à mon XML (via les textarea) dans un nouveau fichier XML
Et la je bloque ....
Je n'arrive pas à remonter depuis la fonction en javascript aux noeuds et attribus de mon fichier XML qui est déjà chargé en mémoire...
Je trouve des exemples pour charger un XML en mémoire mais rien pour traiter les données d'un XML déjà en mémoire ...
Est-ce que quelqu'un pourrait m'aider?
A voir également:
Comment manipuler un XML déjà en mémoire via une routine en javascript?
Bul3
Messages postés4933Date d'inscriptionsamedi 1 juillet 2006StatutMembreDernière intervention 2 février 201516 20 déc. 2008 à 09:53
bonjour,
une fois chargé ( et pas de la même manière avec IE et FF ! ),
il te reste à en "balayer" le contenu, avec des
élément où est ce xml.getElementsByTagName('balise')[index].firstChild.nodeValue...
par exemple
>>je souhaite enregistrer (via la fonction en javascript) les modifications apportées à mon XML
je ne sais pas si je vais répondre sans me tromper !
mes essais ( à ce jour ) :
_ avec IE, directement mais il faut un .hta au lieu du .htm
_ avec un .htm, avec IE : utiliser l'activeX fileSystemObject
et avec FF : Components.classes["@mozilla.org/file/local;1"]
.createInstance(Components.interfaces.nsILocalFile);
pour la gestion de fichiers texte locaux
avec les autres navigateurs, ce ne doit pas être possible pour l'instant ?
zazalamouche
Messages postés3Date d'inscriptionvendredi 19 décembre 2008StatutMembreDernière intervention22 décembre 2008 22 déc. 2008 à 15:57
Merci pour ta réponse mais j'ai toujours un problème pour balayer le contenu de mon XML avec Firefox!
Avec IE, j'utilise "source = document.XMLDocument" puis ensuite source.getElementsByTagName('balise') ...
Mais en FF, XMLDocument n'est pas supporté!
Quelle est la syntaxe à suivre pour rechercher mes balises dans le XML qui est déjà chargé en mémoire (donc normalement pas besoin de faire un "xmlDoc.load("mon fichier.xml");" ?
Je n'ai pas encore regardé la coté sauvegarde dans un fichier ... A suivre
Merci !
zazalamouche
Messages postés3Date d'inscriptionvendredi 19 décembre 2008StatutMembreDernière intervention22 décembre 2008 22 déc. 2008 à 17:19
Voici des détails:
Config: Client seul, pas de serveur
Mon XML contient: ?xml version= "1.0" encoding="iso-8859-1"?><?xml-stylesheet type="text/xsl" href="modelchecker.xsl" ?>
<modelchecker>
<file check_by ="dzhssg" >
....
</file>
</modelchecker>
= > Il contient le lien vers le XSL en charge de la mise en forme des données à l'écran
Mon fichier modelchecker.xsl contient:
<?xml version ="1.0" encoding= "iso-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<head>
<title>
Static Model Check Report
</title>
<script language="javascript" type="text/javascript" src="Script-Modelchecker.js" >
// attacher le fichier de déclaration du tableau avec les références des livres
</script>
</head>
<xsl:apply-templates select ="modelchecker"/>
</html>
</xsl:template>
=> Il contient le lien vers des fonctions en javascripts qui me permettent d'agir sur les données affichées, de gérer les données saisie dans certains champs (textarea par ex)
Le script Script-Modelchecker.js contient:
function save_report()
{
if( window.ActiveXObject)
{ // pour Internet Explorer
alert('Internet Explorer detecte !')
source = document.XMLDocument;
save_function();
}
else
{
if (document.implementation.createDocument)
{ // pour FireFox et Consors
alert('Firefox detecte !')
EQUIV DE "source = document.XMLDocument;" !!!!!!
save_function();
}
else
{
alert('Votre navigateur ne supporte pas le XML !?');
}
}
}
function save_function()
{
var NodeList = source.getElementsByTagName("file")
for(var i=0; i< NodeList.length; i++){
alert(i+ ":"+ NodeList(i).nodeName);
}
...
}
Comment cela fonctionne (ou presque):
Le fichier XML est généré par une application, mon but est de visualiser son contenu et de saisir quelques données. En lançant le fichier XML directement via l'explorateur windows, le lien est fait avec le XSL et la mise en page est effectuée directement.
Je me retrouve donc avec à l'écran le contenu du XML formaté par le XSL
Sous IE, via la ligne "source = document.XMLDocument;" je peux pointer sur la structure du XML montée en RAM.
Mon problème est que je n'ai pas trouvé l'équivalent pour FF !
Je n'ai pas besoin d'utiliser la fonction "xmlD.load(fichier)" car mon fichier est déjà chargé en mémoire !
Est-ce que tout est clair maintenant ?
Merci pour votre aide !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Bul3
Messages postés4933Date d'inscriptionsamedi 1 juillet 2006StatutMembreDernière intervention 2 février 201516 22 déc. 2008 à 17:49
>>le lien est fait avec le XSL et la mise en page est effectuée directement.
ben alors.... étudie la page ! c'est du html
ce sera probablement plus simple
de toutes manières le xsl pouvant trier/sélectionner.. et autres joyeusetés
( je ne sais pas si tu fais ? ), mieux veux travailler sur le html
me semble-t-il.
[mon Site] [M'écrire] Bul