IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Parser XML avec Javascript


Sujet :

JavaScript

  1. #1
    Candidat au Club
    Inscrit en
    Décembre 2010
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 9
    Points : 3
    Points
    3
    Par défaut Parser XML avec Javascript
    Bonjour tout le monde,

    j'ai un petit problème pour parser un fichier XML.
    je m'explique je travail sous JBUILDER sur une page JSP la dont j'ai une fonction en JavaScript qui doit parser un fichier XML pour extraire des valeurs voici ma fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    <SCRIPT TYPE="text/javascript" language="Javascript">
     
    var admin ;
    var dbName;
    var port;
     
    function parse()
    {
    var xmlDoc= null;
    xmlDoc = new ActiveXObject("Msxml2.DOMDocument.4.0");
    xmlDoc.async=false;
     
    xmlDoc.validateOnParse = true;
    xmlDoc.load("configuration.xml");
    if (xmlDoc.parseError.errorCode != 0)
    {
    alert("Error in line " + xmlDoc.parseError.line +
    " position " + xmlDoc.parseError.linePos +
    "\nError Code: " + xmlDoc.parseError.errorCode +
    "\nError Reason: " + xmlDoc.parseError.reason +
    "Error Line: " + xmlDoc.parseError.srcText);
     
    }
    else
    admin = xmlDoc.getElementsByTagName("admin")[0].childNodes[0].nodeValue;
    document.getElementById('dbName').value = xmlDoc.getElementsByTagName("dbName")[0].childNodes[0].nodeValue;
    alert(document.getElementById('dbName').value);
    document.getElementById('port').value = xmlDoc.getElementsByTagName("port")[0].childNodes[0].nodeValue;
    port = document.getElementById('port').value;
    alert(document.getElementById('port').value);
     
    }
    </SCRIPT>
    le problème c'est que j'arrive pas à instancier mon parseur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xmlDoc = new ActiveXObject("Msxml2.DOMDocument.4.0");
    c'est vous avez des proposition je suis preneur
    merci d'avance

  2. #2
    Expert confirmé
    Avatar de Loceka
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    2 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 2 276
    Points : 4 845
    Points
    4 845
    Par défaut
    Je te conseille de poster sur le forum javascript plutôt, étant donné que c'est un problème javascript.

  3. #3
    Membre éprouvé Avatar de alain.couthures
    Profil pro
    Gérant
    Inscrit en
    Avril 2007
    Messages
    902
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Avril 2007
    Messages : 902
    Points : 1 247
    Points
    1 247
    Par défaut
    Parser un document XML en Javascript dépend du moteur utilisé par le navigateur.

    Pour ce qui est d'Internet Explorer, MSXML3 était accessible depuis IE6 jusqu'à IE8. IE9, quant à lui, est installé avec MSXML6.

    -Alain
    Formulaires XForms sur tous navigateurs sans extension à installer (architecture XRX) : http://www.agencexml.com/xsltforms/

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Autrement dit, il vaut mieux utiliser jQuery ou assimiliés, quoi.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Candidat au Club
    Inscrit en
    Décembre 2010
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 9
    Points : 3
    Points
    3
    Par défaut xml avec javascript
    j'utilise MSXML3 pour IE6.
    j'arrive a parser mon doc XML avec IE6, mais avec JBuilder quand j'exécute ma page html là j'arrive pas a parser mon doc xml.

  6. #6
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Mais... Qu'est-ce qu'on s'en tape de JBuilder ? Tu parles de parser le XML avec du JavaScript dans IE. C'est du JavaScript, c'est dans IE que ça se passe.
    Le JavaScript présent dans les JSP éditées avec JBuilder, c'est exactement le même que du JavaScript qui serait ailleurs.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Candidat au Club
    Inscrit en
    Décembre 2010
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    je suis tout a fait d'accord avec toi thelvin mais j'arrive pas a comprendre pourquoi mon javascript dans jbuilder ne parse pas mon doc xml, mais ailleurs il le fait parfaitement.
    c'est ce point que je n'arrive pas à comprendre

  8. #8
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    il est où ton parseur dans une page web ou sur un autre outil ?

    Que fait jbuilder dans cette histoire ?
    que signifie "mon javascript dans jbuilder ne parse pas mon doc xml" (je le croyais dans IE ???) ?

    Quelle est l'erreur ?
    As-tu une trace d'erreur à nous donner ?
    teste-tu avec la "web view" interne de Jbuilder ?

    jbuilder web view est un navigateur qui comme tout navigateur à sa propre implémentation de js et html

    or
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xmlDoc = new ActiveXObject("Msxml2.DOMDocument.4.0");
    n'a absolument rien de standard c'est l'instantiation d'un objet Windows(tm)
    Activex est une technologie purement Microsoft(c) et qui n'est disponible que dans le navigateur IE

    avec firefox il faut faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    xmlDoc=document.implementation.createDocument("","",null);
    xmlDoc.load("configuration.xml");
    mais il y a beaucoup plus simple
    tout navigateur contient déjà un parser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <iframe id="xmldocument" style="display:none" src="configuration.xml"></iframe>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    xmlDoc=getElementById('xmldocument').document;
    admin = xmlDoc.getElementsByTagName("admin")[0].childNodes[0].nodeValue;
    document.getElementById('dbName').value = xmlDoc.getElementsByTagName("dbName")[0].childNodes[0].nodeValue;
    alert(document.getElementById('dbName').value);
    document.getElementById('port').value = xmlDoc.getElementsByTagName("port")[0].childNodes[0].nodeValue;
    port = document.getElementById('port').value;
    alert(document.getElementById('port').value);
    en clair tu mets ton xml dans un ilot ou un iframe
    le navigateur le parse lui-même
    et tu parcour le dom pour piocher tes petits
    A+JYT

  9. #9
    Candidat au Club
    Inscrit en
    Décembre 2010
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 9
    Points : 3
    Points
    3
    Par défaut xml en javascript
    merci sekaijin pour vous explications, tout d'abord je tiens à préciser que je suis un débutant c'est pour cette raison des fois je donne des explications pas assez clair.

    pour répondre a vous questions:
    -Jbuilder je l'utilise comme un IDE.
    -la signification de "mon javascript dans jbuilder ne parse pas mon doc xml" c'est que avant que je travail sur IDE Jbuilder j'ai creé une page html avec notePad, dont j'ai integre mon programme Javascript qui me permet de parser un doc xml et recuprer des données et ca fonctionne bien. ensuite j'ai voulé utilisé le meme programme dans ma page html dans IDE Jbuilder mais je ne parse pas le bon document.
    -j'ai met beaucoup de trace(des alert) pour voir si je parce bien et si je récupere bien les données souhaites mais je voit bien que mon programme faire rien et ne charge pas bien le doc XML.

    jbuilder web view je le trouve pas est-ce que web Start pourrai faire l'affaire?

    j'espère que j'ai à vous questions et merci pour tes explications et pour ton aide.

  10. #10
    Candidat au Club
    Inscrit en
    Décembre 2010
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    est-ce que je suis oblige de mettre ça :
    <iframe id="xmldocument" style="display:none" src="configuration.xml"></iframe>
    afin de charger mon document xml, sachant que j'utilise déjà cette ligne suivante pour le même but:
    <link type="text/xml-script" href="jsp/configuration.xml" />

  11. #11
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    dans jbuilder lorsque tu crée une page html tu peux ce que ça donnera directement dans jbuilder

    pour ça jbuilder utilise un navigateur à lui
    si tu utilise cette possibilité de Jbuilder
    tu as deux chose qui change par rapport à un serveur web

    les chemins ne sont pas obligatoirement les mêmes
    la façon dont le navigateur interprète le code n'est pas la même.

    pour ce qui est de link
    link indique au navigateur qu'un document est lié
    la norme HTML prévoit certain type de link (css par exemple)
    pour tous les type de lien prévu le navigateur va faire le nécessaire

    pour une feuille de style il va lancer l'interprète Css et lier le résultat à la page.

    pour les types inconnus de lui il ne fait que créer un noeud link avec les attribut fournis.

    utiliser un iframe est différent
    c'est dire au navigateur
    créé un nouveau document
    récupère le source à l'adresse indiqué
    parce le
    et affiche le résultat

    je pense qu'il te faut lire la norme HTML
    avant de commencer à bricoler ce genre de chose.
    A+JYT

  12. #12
    Candidat au Club
    Inscrit en
    Décembre 2010
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    salut sekaijin,
    c'est ce petit détail m'a échappe d'utiliser iframe. mais même en utilisant cette méthode j'arrive toujours pas à récupérer mes données dans le fichier xml. voici mon programme :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
     
    <HEAD>
    <TITLE></TITLE>
     
    <META http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
     
    <LINK rel="stylesheet" href= "ressources/styleModele.css" type="text/css">
     
     
     
    <!--	<LINK href="images/style.css" type="text/css" rel="stylesheet"> -- >
     
    <SCRIPT language="Javascript" >
    	function handleEnter (field, event) {
            	var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
                    if (keyCode == 13)
                    {
                    	document.forms[0].submit();
                            return true;
              	}
                    else {
                    	return true;
                    }
    	}
    //  -->
    </SCRIPT>
     
    <SCRIPT TYPE="text/javascript" language="Javascript">
            
            var admin ;
            var dbName;
            var port;
          
          function parse()
          {
     
            xmlDoc=getElementById('xmldocument').document;
     
                       if (xmlDoc.parseError.errorCode != 0)
                            {
                                    alert("Error in line " + xmlDoc.parseError.line +
                                    " position " + xmlDoc.parseError.linePos +
                                    "\nError Code: " + xmlDoc.parseError.errorCode +
                                    "\nError Reason: " + xmlDoc.parseError.reason +
                                    "Error Line: " + xmlDoc.parseError.srcText);
                                    
                            }
                            else
                            alert('OK');
     
                       //alert(xmlDoc.getElementsByTagName("admin")[0].childNodes[0].nodeValue);
                       admin = xmlDoc.getElementsByTagName("admin")[0].childNodes[0].nodeValue;
                       
                       //alert(xmlDoc.getElementsByTagName("dbName")[0].childNodes[0].nodeValue);
                       //dbName = xmlDoc.getElementsByTagName("dbName")[0].childNodes[0].nodeValue;
               //document.getElementById("dbName").value = bdName;
                       
                       document.getElementById('dbName').value = xmlDoc.getElementsByTagName("dbName")[0].childNodes[0].nodeValue;
                       //dbName = document.getElementById('dbName').value;
                       alert(document.getElementById('dbName').value);
                       document.getElementById('port').value = xmlDoc.getElementsByTagName("port")[0].childNodes[0].nodeValue;
                       port = document.getElementById('port').value;
                       alert(document.getElementById('port').value);
                            
                       //alert(xmlDoc.getElementsByTagName("port")[0].childNodes[0].nodeValue);
                      // port = xmlDoc.getElementsByTagName("port")[0].childNodes[0].nodeValue;
                       
     
     
                       //var admin = xmlDoc.getElementsByTagName("admin")[0].childNodes[0].nodeValue;
     
                       //var port = xmlDoc.getElementById("port").firstChild.nodeValue;
     
          }  
     
    </SCRIPT>
     
    </HEAD>
     
    <BODY marginheight="0" marginwidth="0" onload="document.forms[0].login.focus(); parse();" >
       <iframe id="xmldocument" style="display:none" src="configuration.xml"></iframe>
    	<FORM  id="frmCoodinateurAdminCATTI" name="frmCoodinateurAdminCATTI" action="./servlet/frmCoodinateurAdminCATTI" method="POST" >
            	<P align="center"><IMG height="200" src="images/logo.jpg"  width="600"></P>
                    <TABLE align="center">
                    	<TR>
                            	<TD height="10"></TD>
                            	<TD height="17"></TD>
                      	</TR>
     
                        	<TR>
                            	<TR>
                                    	<TD height="10"><STRONG><FONT size="2">Identifiant</FONT></STRONG></TD>
                                            <TD height="25"><INPUT type="text" name="login" value="cora" size="20"></TD>
                                	</TR>
     
                                	<TR>
                                    	<TD height="20"><STRONG><FONT size="2">Mot de passe</FONT></STRONG></TD>
                                            <TD height="25"><INPUT type="password" name="password" value="cora" size="20"></TD>
                            	</TR>
     
                              	<TR>
                                            <TD height="2"><STRONG><FONT size="2">Host</FONT></STRONG></TD>
                                            <TD height="25"><INPUT type="text" name="host" value="172.29.72.102" size="20"></TD>
                              	</TR>
     
                                  	<TR>
                                            <TD height="2"></TD>
                                            <TD height="50"><INPUT type="submit" value="Valider" onclick="javascript:fcValider('CONNECT');"></TD>
                              	</TR>
    <!-- 29/11/06 Start Add by LBA -->
    			</TR>
    <!-- 29/11/06 End Add by LBA -->
     
    		</TABLE>
     
                    <INPUT type="hidden" name="ACTION" id="ACTION" value="">
                    <INPUT type="hidden" name="dbName" id="dbName" value="dbName">
                    <INPUT type="hidden" name="port"   id="port" value="port">
     
          	</FORM>
     
     
    </BODY>
     
     
    </HTML>

    sachant que dans mon fichier configuration.xml j'ai que trois paramètres à récupérer pour l instant.

  13. #13
    Candidat au Club
    Inscrit en
    Décembre 2010
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    bonjour sekaijin,
    j'ai une derniere question a vous poser à propos de la position iframe, je doit la position avant mon programme javascript ou apres
    <iframe id="xmldocument" style="display:none" src="configuration.xml"></iframe>

  14. #14
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    il faut que le contenu soit chargé avant sont traitement

  15. #15
    Candidat au Club
    Inscrit en
    Décembre 2010
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    donc je la mettrais après la balise <body> comme dans le programme au-dessus

Discussions similaires

  1. incrémenter valeur d'un noeud xml avec javascript
    Par caweb dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 09/01/2008, 09h52
  2. Chargement Fichier XML avec javascript
    Par kaptnkill dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 02/10/2007, 14h22
  3. parser xml avec linux
    Par nemya dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 06/04/2006, 10h49
  4. Lire un xml avec javascript et generer code html ?
    Par zevince dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 04/04/2006, 11h45
  5. [XML] [EXPAT] Parser XML avec PHP
    Par glsn dans le forum Bibliothèques et frameworks
    Réponses: 8
    Dernier message: 20/12/2005, 12h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo