Lecture XML Xpath - XPathNodeIterator avec attribut
Bonjour,
J'aimerais savoir s'il est possible de se placé avec Xpath et XPathNodeIterator sur une section du XML comportant un attribut?
Exemple simplifié de mon XML:
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 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
|
<?xml version="1.0" encoding="utf-8"?>
<Project name="XXXX">
<Product>
<Type>GC</Type>
</Product>
<ObjectBases>
<Source>
<Name>EP</Name>
<Section>Factory</Section>
</Source>
</ObjectBases>
<Versions>
<VId>
<VName>CONFIG</VName>
<VVers>5.5.4</VVers>
</VId>
<VId>
<VName>Data base Config</VName>
<VVers>V3.17</VVers>
</VId>
</Versions>
<Section name="Section1">
<Object>
<Label>Company_name</Label>
<Value>0</Value>
</Object>
<Object>
<Label>projectname</Label>
<Value>XXX</Value>
</Object>
</Section>
<Section name="Section2">
<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>
</Section>
<Section name="Section3">
<Object>
<Label>Extra requests</Label>
<Value></Value>
</Object>
</Section>
<Section name="Section3">
<Object>
<Label>MP20</Label>
<Value>MUP9</Value>
<Qty>2</Qty>
</Object>
<Object>
<Label>Rectifier</Label>
<Value>80</Value>
<Qty>6</Qty>
</Object>
<Object>
<Label>relays card</Label>
<Value>DC167</Value>
<Qty>2</Qty>
</Object>
</Section>
<Section name="Manufacturing">
<Object>
<Label>FAB</Label>
<Value>7537</Value>
</Object>
<Object>
<Label>PRE</Label>
<Value>382</Value>
</Object>
<Object>
</Section>
</Project> |
J'ai besoin de récupérer la totalité des objets qui sont dans:
Project/Section name="Section2"/Object.
J'arrive sans souci a me positionner sur Projet section a l'aide de:
Code:
1 2 3 4 5 6 7 8 9 10
| Private _LecXML As XPathDocument
Private _Navigator As XPathNavigator
Private _Noeud As XPathNodeIterator
Private _ExpXPath As String
-----------------------------------------------
_LecXML = New XPathDocument(FilesXML)
_Navigator = _LecXML.CreateNavigator()
_ExpXPath = "Project/Section"
_Noeud = _Navigator.[Select](_Navigator.Compile(_ExpXPath)) |
Ensuite j'arrive a naviguer dans le noeud
avec:
Code:
1 2 3 4 5 6 7 8 9
|
If _Noeud.Count <> 0 Then
_Noeud.MoveNext()
For i As Integer = 0 To _Noeud.Count - 1
'Je récupère l'attribut
Dim NameAtt As String = _Noeud.Current.GetAttribute("name", "")
Next
End If |
Mais j'aimerai pouvoir rajouté une autre boucle pour récupérer tout les <Object> ou me placé directement dessus.
j'ai aussi tenté de récupéré la position du noeud en court pour créer un autre XPathNodeIterator mais pour le moment sans résultat.
LE BUT:
Je souhaite soit récupérer uniquement une "Section" aillant l'attribut X pour remplir une collection de ces "Objets"
Ou
Toutes les "Section" identifier chaque attribut et replir plusieurs collection de chaque "Object"
----------------------
J'arrive à me déplacer dans les noeud avec:
_Noeud.MoveNext()
_Noeud.Current.MoveToFirstChild()
_Noeud.Current.MoveToNext()
En me déplaçant j'ai vu que le paramètre indexInParent m'indique le nombre de nœuds dans le nouveau emplacement mais je n'arrive pas a récupérer cette valeur pour l'utiliser dans une boucle.
Merci de votre aide