Bonjour à tous
Je suis en train de développer une application réseau en java; Afin de permettre une évolution de l'application sans toucher au code, j'ai créé un fichier de configuration en xml
Ce programme teste les differents services présents dans le fichier de conf.
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
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
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270 <?xml version="1.0" encoding="UTF-8"?> <services> <service> <description>Serveur Apache sur Galilee</description> <host>galilee.in.ac-lille.fr</host> <port>80</port> <protocole>http</protocole> </service> <service> <description>Serveur Apache sur Torpedo</description> <host>torpedo.in.ac-lille.fr</host> <port>80</port> <protocole>http</protocole> </service> <service> <description>MySql sur Galilee</description> <host>galilee.in.ac-lille.fr</host> <port>3306</port> <protocole>mysql</protocole> </service> <service> <description>MySql sur Torpedo</description> <host>torpedo.in.ac-lille.fr</host> <port>3306</port> <protocole>mysql</protocole> </service> <service> <description>Ftp sur SVGD</description> <host>svgd.in.ac-lille.fr</host> <port>21</port> <protocole>ftp</protocole> </service> <service> <description>Ldap sur Monk</description> <host>monk.in.ac-lille.fr</host> <port>389</port> <protocole>ldap</protocole> </service> <service> <description>Http sur Ia62css2</description> <host>ia62css2.ac-lille.fr</host> <port>80</port> <protocole>http</protocole> </service> <service> <description>Ssh sur Mars</description> <host>mars.in.ac-lille.fr</host> <port>22</port> <protocole>Null</protocole> </service> <service> <description>Ssh sur Jupiter</description> <host>jupiter.in.ac-lille.fr</host> <port>22</port> <protocole>Null</protocole> </service> <service> <description>Ssh sur Krypton</description> <host>krypton.in.ac-lille.fr</host> <port>22</port> <protocole>Null</protocole> </service> <service> <description>Ssh sur Aldea</description> <host>aldea.in.ac-lille.fr</host> <port>22</port> <protocole>Null</protocole> </service> <service> <description>Ssh sur Mercure</description> <host>mercure.in.ac-lille.fr</host> <port>22</port> <protocole>Null</protocole> </service> <service> <description>Ssh sur Intra62</description> <host>intra62.in.ac-lille.fr</host> <port>22</port> <protocole>Null</protocole> </service> <service> <description>Http sur Intra62</description> <host>intra62.in.ac-lille.fr</host> <port>80</port> <protocole>http</protocole> </service> <service> <description>Ssh sur Piwi</description> <host>piwi.in.ac-lille.fr</host> <port>22</port> <protocole>Null</protocole> </service> <service> <description>Http sur Piwi</description> <host>piwi.in.ac-lille.fr</host> <port>80</port> <protocole>http</protocole> </service> <service> <description>Http sur Scribe ( cups )</description> <host>scribe.in.ac-lille.fr</host> <port>631</port> <protocole>cups</protocole> </service> <service> <description>Ssh sur Monk</description> <host>monk.in.ac-lille.fr</host> <port>22</port> <protocole>ssh</protocole> </service> <service> <description>Rdp sur Galilee</description> <host>galilee.in.ac-lille.fr</host> <port>3389</port> <protocole>rdp</protocole> </service> <service> <description>Rdp sur Neptune</description> <host>neptune.in.ac-lille.fr</host> <port>3389</port> <protocole>rdp</protocole> </service> </services>
Il faut donc que je parse ce document afin de pouvoir en exploiter les données.
Pour mon parsing j'ai utilisé ce code :
Une fois que j'ai récupéré les données d'un service, je les envoi dans une autre classe de mon appli pour en faire un vecteur :
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
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 public void lecture_xml() throws IOException, SAXException, ParserConfigurationException { ajout_objet obj = new ajout_objet(); File file = new File("conf.xml"); DocumentBuilderFactory f = DocumentBuilderFactory.newInstance(); DocumentBuilder p = f.newDocumentBuilder(); Document doc = p.parse(file); NodeList listHost = doc.getElementsByTagName("host"); for (int i = 0; i < listHost.getLength(); i++) { /* ###### HOST ###### */ Element host = (Element) listHost.item(i); String hostString = ((Text) host.getFirstChild()).getData(); /* ###### PORT ###### */ NodeList listPort = doc.getElementsByTagName("port"); Element port = (Element) listPort.item(i); String portString = ((Text) port.getFirstChild()).getData(); int portInt = Integer.parseInt(portString); /* ###### PROTOCOLE ###### */ NodeList listProtocole = doc.getElementsByTagName("protocole"); Element protocole = (Element) listProtocole.item(i); String protocoleString = ((Text) protocole.getFirstChild()).getData(); /* ###### DESCRIPTION ###### */ NodeList listDescription = doc.getElementsByTagName("description"); Element description = (Element) listDescription.item(i); String descriptionString = ((Text) description.getFirstChild()).getData(); obj.obj(hostString, portInt, protocoleString,descriptionString); } }
Mes données étant prete a leur utilisation, il me reste maintenant à les utiliser. C'est là que mes problèmes commencent !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 static Vector vect = new Vector(20, 5); public void obj(String host, int port, String protocole, String description) { vect.add(host); vect.add(new Integer(port)); vect.add(protocole); vect.add(description);
Je vous affiche le code et ensuite je vous montrerai là où ca bloque
Mon vecteur étant récursif : [ host port, protocole, description ] , j'utilise une boucle d'un pas de 4 afin de prendre chaque données.
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 // ... ajout_objet obj = new ajout_objet(); // System.out.println(obj.vect); System.out.println("Debut des tests à : " + fich.dateJour()); for (int i = 0; i < obj.vect.size(); i = i + 4) { // System.out.println(obj.vect.get(i)); String host = obj.vect.get(i).toString(); // System.out.println(obj.vect.get(i+1)); String portString = obj.vect.get(i + 1).toString(); int port = Integer.parseInt(portString); String protocole = obj.vect.get(i + 2).toString(); String description = obj.vect.get(i + 3).toString(); // ...
Le probleme est qu'en faisant ainsi, mon fichier de configuration xml devient statique et c'est tout l'inverse d'un fichier xml !! Car, si je décide d'ajouter une donnée dans mon fichier xml comme des identifiants de base mysql ou n'importe quoi d'autre, ma boucle d'un pas de 4 est totalement initilisable !
Ma question est donc : Comment puis-je faire pour parser mon fichier xml et utiliser comme il le faut mes données par la suite ?
au plaisir de vous lire !!
Partager