IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Lecture XML Xpath - XPathNodeIterator avec attribut


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de megamario
    Homme Profil pro
    VB6/VB.net/C/C++/C#
    Inscrit en
    Septembre 2008
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : VB6/VB.net/C/C++/C#
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 931
    Par défaut 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 : 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
     
    <?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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Membre éprouvé Avatar de megamario
    Homme Profil pro
    VB6/VB.net/C/C++/C#
    Inscrit en
    Septembre 2008
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : VB6/VB.net/C/C++/C#
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 931
    Par défaut
    C'est bon j'ai trouvé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    _ExpXPath = "Project/Section[@name='Section2']/Object"

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VB.net]Lecture xml vers dataset : prob avec sous noeuds
    Par Garrett dans le forum Windows Forms
    Réponses: 1
    Dernier message: 25/04/2007, 20h28
  2. [DOM] lecture d'un xml en javascript avec la DOM XML
    Par tetardo dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 23/03/2007, 14h42
  3. Lecture d'un fichier XML de config avec Java
    Par cofy dans le forum Format d'échange (XML, JSON...)
    Réponses: 6
    Dernier message: 31/01/2006, 15h54
  4. XML / Xpath -> une solution avec Builder?
    Par say dans le forum C++Builder
    Réponses: 3
    Dernier message: 12/05/2005, 11h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo