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"


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
Vu ce code vous pouvez constater que ce qui m’intéresse c'est lorsqu'il trouve l'information 277 et 278

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:
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>
Il faudrait donc que je puisse me placer sur "Project/Section[@name='Configurator']/Object/Label = 277" mais cette formulation ne fonctionne pas.
Remarquez cela va assez vite comme cela mais parfois j'ai plus de 2000 fichiers à analyser et cela commence à faire.

Merci