Salut a tous.

j'ai ce code xml


Code xml : 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
<P>
  <P1>
    <Operation>insertion</Operation>
    <PId>2869</PId>
 
      <Details>
           <champ>vendeur</champ>
      <encienneVal></encienneVal>
      <nouvelleVal>1</nouvelleVal>
      <champ>stok</champ>
          <encienneVal></encienneVal>
      <nouvelleVal>10</nouvelleVal>
 
    </Details>
  </P1>
 
<P1>
    <Operation>mise a jour</Operation>
    <PId>2860</PId>
 
      <Details>
           <champ>vendeur</champ>
      <encienneVal>10</encienneVal>
      <nouvelleVal>3</nouvelleVal>
      <champ>stok</champ>
          <encienneVal>5</encienneVal>
      <nouvelleVal>40</nouvelleVal>
 
    </Details>
  </P1>
 
</P>


je veux recuperer pour chaque P1 l'Operation effectuée ensuite le idP et aussi les champs inserés ou modifiés.apparament ca marche, mais quand j'ai plusieurs balise <Champ> alors la la boucle s'arette avant de les recuperer je sais que c'est a cause "exit while" mais je sais pas quoi fairea la place, surtout que je suis pas doué pour ce qui est XML,XPATH...
pour cela j'ai fais ceci:



Code vb : 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 document As XPathDocument = New XPathDocument(XmlSource)
        Dim navigator As XPathNavigator = document.CreateNavigator()
        Dim nodesoperation As XPathNodeIterator = navigator.Select("/P/P1/Operation")
        Dim nodesId As XPathNodeIterator = navigator.Select("/P/P1/PId")
 
        Dim nodesNameFld As XPathNodeIterator = navigator.Select("/P/P1/Details/Champ")
        Dim nodesNewVal As XPathNodeIterator = navigator.Select("/P/P1/Details/NouvelleVal")
 
        Dim nodesOldVal As XPathNodeIterator = navigator.Select("/P/P1/Details/EncienneVal")
 
        While nodesoperation.MoveNext()
            MsgBox(nodesoperation.Current.Value)
 
            While nodesId.MoveNext()
                MsgBox(nodesId.Current.Value)
                Exit While
            End While
 
            While nodesNameFld.MoveNext()
                MsgBox(nodesNameFld.Current.Value)
                Exit While
            End While
 
            While nodesOldVal.MoveNext()
                MsgBox(nodesOldVal.Current.Value)
                Exit While
            End While
            While nodesNewVal.MoveNext()
                MsgBox(nodesNewVal.Current.Value)
                Exit While
            End While
 
        End While

s'il ya des idées beaucoup mieux que la mienne n'hésitez surtout pas.

Merci