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

Windows Forms Discussion :

[vb.NET][xmlTextReader] influence d'1 point d'arrêt


Sujet :

Windows Forms

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 60
    Points : 81
    Points
    81
    Par défaut [vb.NET][xmlTextReader] influence d'1 point d'arrêt
    Bonjour,

    je n'en crois pas mes yeux : j'ai une fonction en vb.NET qui ne marche QUE si elle a un point d'arrêt. Diabolique.
    Il s'agit de lire un petit fichier XML, grâce à la classe XmlTextReader. La propriété .Name du lecteur ne semble pas mise à jour lorsqu'il n'y a pas de point d'arrêt...

    Voici mon code vb (un extrait) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
                Do : Loop While (.Read() AndAlso (.Name <> "unites_oeuvre"))
    'pour trouver la balise ouvrante de ma liste d'unités d'oeuvres
                If (Not .IsEmptyElement) Then
                    Do While (.Read())
                        If (.Name = "uo") Then
                            objUO = New unite_oeuvre('GetAttribute(blablabla))
    'les attributs donnent les paramètres du constructeur de ma classe
                            .unites_oeuvre.Add(objUO)
     'ajout dans une collection
                        Else : Exit Do
                        End If
                    Loop
                End If
    et le bout de Xml que c'est censé lire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
      <unites_oeuvre>
        <uo nom="UO_Test" id="38" description="test38" />
        <uo nom="UO_Test_" id="39" description="test39" />
      <unites_oeuvres />
    En pas à pas, ou même avec un point d'arrêt juste avant la condition .Name="uo", ça marche, mais sinon la boucle n'est jamais exécutée (.Name="uo" s'évalue toujours à faux).

    Pour info, j'utilise vs 2003. Est-ce quelqu'un a une idée de l'origine du problème ? Parce que moi je vois vraiment pas... Le plus drôle, c'est que je peux pas déboguer (puisque quand je veux voir d'un peu plus près, ça marche...)

    Merci d'avance !

    --
    Rom1

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 652
    Points : 730
    Points
    730
    Par défaut
    Bah là comme ça je vois pas (il est tard et c'est du VB :), mais tu peux toujours essayer à la sauce XPath.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim reader As XmlTextReader
    blabla
    Dim document As XPathDocument = New XPathDocument( reader )
    Dim navigator As XPathNavigator = document.CreateNavigator()
    Dim iterator As XPathNodeIterator = navigator.Select( "/unites_oeuvre/uo" )   ' ajouter ce qu'il faut devant si 'unites_oeuvre' n'est pas la racine
     
    While iterator.MoveNext()
      objUO = New unite_oeuvre(blablabla)
      bleh.unites_oeuvre.Add(objUO)
    End While
    Ça simplifie la boucle (et y en n'a qu'une), t'as pas à t'occuper de la structure du fichier (tu peux notamment coller tous les commentaires que tu veux dedans), et si tu scannes d'autres trucs dans ce fichier, ça a des chances d'être plus rapide :)

    Et là, ton problème actuel a très peu de chances de se reproduire :)
    Be wary of strong drink.
    It can make you shoot at tax collectors, and miss.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 60
    Points : 81
    Points
    81
    Par défaut
    Merci pour l'indication ! Effectivement, ça va alléger le code. Et expliqué comme ça, XPath devient beaucoup plus clair.

    J'ai trouvé un workaround pour le problème initial (pour que la boucle qui marche en pas à pas marche tout court) : boucler si Name="" ; ça donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
                Do : Loop While (.Read() AndAlso (.Name <> "unites_oeuvre"))
    'pour trouver la balise ouvrante de ma liste d'unités d'oeuvres
                If (Not .IsEmptyElement) Then
                    Do While (.Read())
                        If (.Name = "uo") Then
                        'on lit ...
     
                        ElseIf (.Name <> "") : Exit Do
     
                        'ELse on fait rien donc on boucle
                        End If
                    Loop
                End If
    Là, ça marche. En pratique, c'est comme si on lisait des lignes sans .Name, qui seraient sautées automatiquement en pas à pas. Ou alors .Name (ou .Read) a des ratées quand ça va trop vite...

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

Discussions similaires

  1. [Débutant] Page ASP.NET avec un lien qui pointe vers une requête HTTPS
    Par fterf dans le forum ASP.NET
    Réponses: 2
    Dernier message: 13/07/2014, 12h07
  2. ASP.NET : débogueur ignore les points d'arrêt
    Par jozes dans le forum ASP.NET
    Réponses: 15
    Dernier message: 05/06/2009, 16h19
  3. [Plugi][phpeclipse] point d'arrêt pas pris en compte
    Par damjal dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 22/11/2005, 23h58
  4. Point d'arrêt dans le programme
    Par jmde dans le forum Access
    Réponses: 9
    Dernier message: 20/10/2005, 21h06
  5. possible de sauvegarder ses points d'arrêts ?
    Par Merfolk dans le forum C++Builder
    Réponses: 2
    Dernier message: 14/09/2004, 11h23

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