Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 12/08/2011, 10h20   #1
Invité de passage
 
Inscription : décembre 2010
Messages : 9
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 9
Points : 0
Points : 0
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 :
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 :
xmlDoc = new ActiveXObject("Msxml2.DOMDocument.4.0");
c'est vous avez des proposition je suis preneur
merci d'avance
mouss75 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/08/2011, 17h44   #2
Membre Expert
 
Avatar de Loceka
 
Tlouye Ci
Inscription : mars 2004
Messages : 1 450
Détails du profil
Informations personnelles :
Nom : Tlouye Ci

Informations forums :
Inscription : mars 2004
Messages : 1 450
Points : 2 149
Points : 2 149
Je te conseille de poster sur le forum javascript plutôt, étant donné que c'est un problème javascript.
Loceka est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/08/2011, 23h27   #3
Membre Expert
 
Avatar de alain.couthures
 
Inscription : avril 2007
Messages : 889
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : avril 2007
Messages : 889
Points : 1 061
Points : 1 061
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/
alain.couthures est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/08/2011, 17h55   #4
Expert Confirmé Sénior
 
Inscription : septembre 2004
Messages : 5 067
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 5 067
Points : 6 991
Points : 6 991
Autrement dit, il vaut mieux utiliser jQuery ou assimiliés, quoi.
thelvin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/08/2011, 10h16   #5
Invité de passage
 
Inscription : décembre 2010
Messages : 9
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 9
Points : 0
Points : 0
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.
mouss75 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/08/2011, 11h40   #6
Expert Confirmé Sénior
 
Inscription : septembre 2004
Messages : 5 067
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 5 067
Points : 6 991
Points : 6 991
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.
thelvin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/08/2011, 12h03   #7
Invité de passage
 
Inscription : décembre 2010
Messages : 9
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 9
Points : 0
Points : 0
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
mouss75 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/08/2011, 12h31   #8
Expert Confirmé
 
Avatar de sekaijin
 
Femme
Urbaniste
Inscription : juillet 2004
Messages : 1 421
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 48
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Urbaniste
Secteur : Santé

Informations forums :
Inscription : juillet 2004
Messages : 1 421
Points : 2 809
Points : 2 809
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 :
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 :
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 :
<iframe id="xmldocument" style="display:none" src="configuration.xml"></iframe>
Code :
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
sekaijin est actuellement connecté   Envoyer un message privé Réponse avec citation 20
Vieux 29/08/2011, 13h02   #9
Invité de passage
 
Inscription : décembre 2010
Messages : 9
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 9
Points : 0
Points : 0
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.
mouss75 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/08/2011, 14h31   #10
Invité de passage
 
Inscription : décembre 2010
Messages : 9
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 9
Points : 0
Points : 0
est-ce que je suis oblige de mettre ça :
Citation:
<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:
Citation:
<link type="text/xml-script" href="jsp/configuration.xml" />
mouss75 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/08/2011, 15h45   #11
Expert Confirmé
 
Avatar de sekaijin
 
Femme
Urbaniste
Inscription : juillet 2004
Messages : 1 421
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 48
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Urbaniste
Secteur : Santé

Informations forums :
Inscription : juillet 2004
Messages : 1 421
Points : 2 809
Points : 2 809
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
sekaijin est actuellement connecté   Envoyer un message privé Réponse avec citation 10
Vieux 29/08/2011, 16h04   #12
Invité de passage
 
Inscription : décembre 2010
Messages : 9
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 9
Points : 0
Points : 0
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 :
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.
mouss75 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/08/2011, 15h36   #13
Invité de passage
 
Inscription : décembre 2010
Messages : 9
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 9
Points : 0
Points : 0
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
Citation:
<iframe id="xmldocument" style="display:none" src="configuration.xml"></iframe>
mouss75 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/08/2011, 16h43   #14
Expert Confirmé
 
Avatar de sekaijin
 
Femme
Urbaniste
Inscription : juillet 2004
Messages : 1 421
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 48
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Urbaniste
Secteur : Santé

Informations forums :
Inscription : juillet 2004
Messages : 1 421
Points : 2 809
Points : 2 809
il faut que le contenu soit chargé avant sont traitement
sekaijin est actuellement connecté   Envoyer un message privé Réponse avec citation 10
Vieux 30/08/2011, 17h29   #15
Invité de passage
 
Inscription : décembre 2010
Messages : 9
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 9
Points : 0
Points : 0
donc je la mettrais après la balise <body> comme dans le programme au-dessus
mouss75 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h13.


 
 
 
 
Partenaires

Hébergement Web