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 :

XPATH ce placer directement la ou l'on souhaite récupérer la donnée


Sujet :

VB.NET

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

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

    Informations forums :
    Inscription : Septembre 2008
    Messages : 928
    Points : 312
    Points
    312
    Par défaut XPATH ce placer directement la ou l'on souhaite récupérer la donnée
    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

  2. #2
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Salut,

    un truc comac devrait faire l'affaire, à tester :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string xpath = "/Project/Section[@name='Configurator']/Object[label=277]";
    Plus je connais de langages, plus j'aime le C.

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

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

    Informations forums :
    Inscription : Septembre 2008
    Messages : 928
    Points : 312
    Points
    312
    Par défaut
    Citation Envoyé par jopopmk Voir le message
    Salut,

    un truc comac devrait faire l'affaire, à tester :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string xpath = "/Project/Section[@name='Configurator']/Object[label=277]";

    Super merci.

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

Discussions similaires

  1. Comment placer des champs où l'on souhaite sur une page ?
    Par moughlee dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 19/05/2009, 14h35
  2. Réponses: 5
    Dernier message: 06/02/2009, 17h27
  3. récupérer des données directement
    Par guillaumepascal dans le forum ASP
    Réponses: 2
    Dernier message: 01/10/2008, 09h11
  4. Se placer directement à la fin d'un textarea
    Par grinder59 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 23/08/2007, 10h01
  5. JTextfield placer directement le curseur à l'int...
    Par ypicman dans le forum Composants
    Réponses: 3
    Dernier message: 16/02/2006, 08h40

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