Bonjour,
J'ai un petit souci pour la déclaration du chemin à donner au XPathNodeIterator.
J'arrive à récupérer l’intégralité des nœuds présent mais je n'arrive pas à me placer pour récupérer une seule valeur.
Voici actuellement ce que j'indique pour parcourir l’intégralité des "Object"
Vu ce code vous pouvez constater que ce qui m’intéresse c'est lorsqu'il trouve l'information 277 et 278
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 Dim _LecXML As XPathDocument Dim _Navigator As XPathNavigator Dim _Noeud As XPathNodeIterator Dim _ExpXPath As String _LecXML = New XPathDocument(myFile) _Navigator = _LecXML.CreateNavigator() _ExpXPath = "Project/Section[@name='Configurator']/Object" _Noeud = _Navigator.[Select](_Navigator.Compile(_ExpXPath)) If _Noeud.Count <> 0 Then _Noeud.MoveNext() For i As Integer = 0 To _Noeud.Count - 1 If _Noeud.Current.GetAttribute("attribut", "") <> "check" Then _Noeud.Current.MoveToFirstChild() Dim lab As Integer = CInt(_Noeud.Current.Value) _Noeud.Current.MoveToNext() Dim value As String = _Noeud.Current.Value 'Detection RCS ou MIP If lab = 277 Then RCS = value End If If lab = 278 Then MIP = value Exit For End If Else Debug.Print("") End If _Noeud.MoveNext() Next End If
Est-il possible donc de se placer directement sur la 277? car je parcours la totalité des nœuds jusqu’à ce que je les trouve.
Exemple du fichier XML:
Il faudrait donc que je puisse me placer sur "Project/Section[@name='Configurator']/Object/Label = 277" mais cette formulation ne fonctionne pas.
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 <Project name="XXXXX"> --- --- --- <Section name="Configurator"> <Object> <Label>1</Label> <Value></Value> </Object> <Object> <Label>2</Label> <Value>TRUE</Value> </Object> <Object> <Label>3</Label> <Value>TRUE</Value> </Object> <Object> <Label>4</Label> <Value>TRUE</Value> </Object> --- --- --- <Object> <Label>274</Label> <Value>FALSE</Value> </Object> <Object> <Label>275</Label> <Value>TRUE</Value> </Object> <Object> <Label>276</Label> <Value>FALSE</Value> </Object> <Object> <Label>277</Label> <Value>FALSE</Value> </Object> <Object> <Label>278</Label> <Value>TRUE</Value> </Object> <Object> <Label>279</Label> <Value>0</Value> </Object> --- --- --- <Object> <Label>719</Label> <Value></Value> </Object> <Object> <Label>720</Label> <Value></Value> </Object> </Section> </Project>
Remarquez cela va assez vite comme cela mais parfois j'ai plus de 2000 fichiers à analyser et cela commence à faire.
Merci
Partager