begin process at 2012 05 29 04:27:27
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Javascript / DHTML / Ajax

 > 

JavaScript et le navigateur

 > 

Autre

 > 

Comment manipuler un XML déjà en mémoire via une routine en javascript?


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Comment manipuler un XML déjà en mémoire via une routine en javascript?

vendredi 19 décembre 2008 à 22:53:37 | Comment manipuler un XML déjà en mémoire via une routine en javascript?

zazalamouche

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?
samedi 20 décembre 2008 à 09:53:56 | Re : Comment manipuler un XML déjà en mémoire via une routine en javascript?

Bul3

Membre Club

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 ?

Cordialement

          [mon Site] [M'écrire] Bul         

lundi 22 décembre 2008 à 15:57:13 | Re : Comment manipuler un XML déjà en mémoire via une routine en javascript?

zazalamouche

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 !
lundi 22 décembre 2008 à 16:26:39 | Re : Comment manipuler un XML déjà en mémoire via une routine en javascript?

Bul3

Membre Club

et comment tu charges le xml avec FF ???

function xmlCharge(fichier)    //// chargement du fichier ////
{    var xmlD;
    if ( document.implementation && document.implementation.createDocument )
            {   xmlD = document.implementation.createDocument('','', null);
                xmlD.onload = function()   
                {    xmlFin(xmlD,xmlD.documentElement.textContent);      }
            }   
    else    {   if ( window.ActiveXObject )
                        {   xmlD = new ActiveXObject('Microsoft.XMLDOM');
                            xmlD.async=true;
                            xmlD.onreadystatechange = function ()
                            {   if ( xmlD.readyState == 4 )
                                {    xmlFin(xmlD,xmlD.xml);    }
                            }
                        }
                else    {    alert('le navigateur ne supporte pas');
                             return false;
                        }
            }
    xmlD.load(fichier);
}

 et dans la function xmlfin :


function xmlFin(quoi,tout)    //// le fichier est chargé ////
{     on utilise     
      quoi.getElementsByTagName('balise')[index].firstChild.nodeValue
      ( et tout c'est... tout )
}



          [mon Site] [M'écrire] Bul         

lundi 22 décembre 2008 à 17:19:19 | Re : Comment manipuler un XML déjà en mémoire via une routine en javascript?

zazalamouche

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>
            <body>
                    <xsl:apply-templates select="modelchecker"/>
            </body>
        </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 !
lundi 22 décembre 2008 à 17:49:52 | Re : Comment manipuler un XML déjà en mémoire via une routine en javascript?

Bul3

Membre Club
>>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           



Cette discussion est classée dans : fichier, javascript, xml, mémoire, déj


Répondre à ce message

Sujets en rapport avec ce message

lecture d un xml avec javascript et sauvegarde [ par glad777 ] Bonjour a tous et a toutesj aimerai savoir comment faire pour avoir une fonction javascript qui puisse me lire un fichier xml, j ai lu un code avec va probleme javascript/xml [ par nezdeboeuf62 ] Bonjour tout le monde !!!Voila j'ai un probleme assez terrible qui mpe deprime!!!Je gere un menu stocké dans un fichier xml. Je voudrais recuperer ce ecrire dans un fichier xml en utilisant javascript [ par ramiBecha ] salut à tous ,j ai un pb ,je veux  ecrire dans un fichier  xml  en utilisant  javascript  .svp aide moi c'est urgent et merci . Modification de fichier XML [ par vlaure ] Bonjour, J'ai une fonction qui me permet d'envoyer plusieurs fois un fichier XML à une application distante à partir d'un fichier sélectionné sur le s javascript sur fichier séparé : problème de choix de la frame [ par bertrouf ] Bonjour,J'ai une fonction sur un fichier.js, Quand je clique sur le bouton sur la page "main", j'appelle la fonction script() qui m'affiche le contenu Inclure un fichier javascript [ par chti71 ] Bonjour,Est - il possible d'inclure un fichier javascript dans un autre ?Genre "#include toto.h" en "C". Equivalent DoEvents (Visual Basic) pour Javascript [ par haplo67 ] Bonjour à tous !Je m'excuse par avance si je n'ai pas choisi le bon thème, mais aucun ne semblait indiqué pour mon problème. Je vous l'expose :Je suis Modifier le paramètre XML en Javascript [ par SebMoine ] Bjrs, Je cherche un script (ou un fonction) en javascript, qui peut modifier le parametre XML en javascript. Par exemple, dans le fichier Settings.x savoir comment ecrire dans un fichier xml [ par fahmim ] salut je suis entrain de construire un siteweb .je suis débutant je veu savoir si quequ'un a un exemple explicatif qui m'aide à ecrire dans un fichier VBScript --> Javascript [ par rvanbellingen ] Est-ce que quelqu'un serait me donner un exemple pour faire passer ce script VB provenant d'une page html en un script javascript pour le rendre plus


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,640 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales