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 :

Probleme lors d'une lecture de fichier XML VB2010


Sujet :

VB.NET

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 12
    Points : 8
    Points
    8
    Par défaut Probleme lors d'une lecture de fichier XML VB2010
    Bonjour a tous,
    Voila, j'ai un fichier xml de cette forme :

    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
    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <Application>
        <Entry>Mahjong</Entry>
        <Name>
            <English>JungleBoy</English>
            <eng-GB>JungleBoy</eng-GB>
        </Name>
        <Vendor />
        <Description />
        <Icons>
            <MainMenu>
                <Type1>hkmj_512_V04_b(90).png</Type1>
                <Type2 />
            </MainMenu>
            <Setting />
            <Ticker />
            <QuickPanel />
            <LaunchImage>
                480x800_Splash_bada[1].png
                <Type1>480x800_Splash_bada[1].png</Type1>
                <Type2 />
            </LaunchImage>
        </Icons>
        <AutoScaling>
            <Enabled>true</Enabled>
            <BaseResolution>480x800</BaseResolution>
        </AutoScaling>
    </Application>
    Et je souhaite donc récupérer la valeur "hkmj_512_V04_b(90).png" qui est donc dans la balise Type1.
    Pour cela j'utilise ce code :
    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
    Dim XmlDoc As XmlDocument = New XmlDocument()
    Dim x As Integer = 0
     Dim element As XmlNodeList
      Dim noeud, noeudEnf, noeudenfenf As XmlNode
            XmlDoc.Load(TxtBoxSpo.Text & "\Info\application.xml")
            element = XmlDoc.DocumentElement.GetElementsByTagName("Icons")
            For Each noeud In element
     
                For Each noeudEnf In noeud.ChildNodes
                    If noeudEnf.LocalName = "MainMenu" Then
    		 For Each noeudenfenf In noeudEnf.ChildNodes
                          	  If (noeudenfenf.LocalName = "Type1") And x = 0 Then
                               	 MsgBox(noeudenfenf.InnerText)
     
                                x = 1
     
                            End If
     Next
    End If
                Next
            Next
    Le problème est que le fichier xml est parfois différent et dans certain cas, il n'y a pas la balise "Type1" et la valeur que je recherche est directement dans la balise "MainMenu" et dans ce cas la mon code ne marche pas.
    Je pensais peut être a vérifier la présence de la balise "Type1" mais comment faire ?
    Merci d'avance pour vos réponses. @+

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Ce serait nettement plus facile avec la sérialisation XML, ou avec Linq to XML

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        Dim doc As XDocument = XDocument.Load(xmlFilePath)
        Dim iconPath As String = doc.Root.<Icons>.<MainMenu>.<Type1>.Value

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    Merci pour ta réponse, sa marche parfaitement !
    un seul problème, si la dernière ligne de mon fichier xml est vide, il me retourne une erreur
    '.', valeur hexadécimale 0x00, est un caractère non valide. Ligne 30, position 1.
    En supprimant cette ligne vide, sa marche.

    Merci @+

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Tu es sûr que c'est vraiment une ligne vide ? Normalement ça ne pose pas de problème (j'ai fait le test et ça marche très bien)

    Par contre j'arrive à reproduire l'erreur en mettant un caractère nul à la fin du fichier (avec un éditeur hexadécimal), parce que ça fait que le document XML n'est plus valide (aucun caractère autre que des espaces ou retours chariots n'est autorisé après la fermeture de l'élément racine)

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    Effectivement il s'agit d'un espace.
    Aurais tu une solution pour supprimer cette dernière ligne ?Je cherche un peu partout mais je n'ai rien trouvé qui fonctionne.
    Merci encore pour tes réponses @+

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par nimbus629 Voir le message
    Effectivement il s'agit d'un espace.
    Non, un espace ne pose pas de problème. D'après le message d'erreur c'est un caractère nul...

    Citation Envoyé par nimbus629 Voir le message
    Aurais tu une solution pour supprimer cette dernière ligne ?Je cherche un peu partout mais je n'ai rien trouvé qui fonctionne.
    Bah déjà il vient d'où ce fichier ? C'est pas très normal qu'il se termine par un caractère null...

    Au pire tu peux bidouiller comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        Dim xml As String = File.ReadAllText(xmlFilePath)
        xml = xml.TrimEnd(Chr(0))
        Dim doc As XDocument = XDocument.Parse(xml)
        Dim iconPath As String = doc.Root.<Icons>.<MainMenu>.<Type1>.Value
    Mais ce serait mieux de régler le problème à la source, parce que ton fichier XML actuel n'est pas valide

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    C'est parfait, ton code fonctionne a merveille !
    Merci beaucoup pour ton aide

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

Discussions similaires

  1. [Batch] Problème avec caractère ! lors d'une lecture de fichier pour extraction
    Par damsmut dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 20/11/2012, 16h21
  2. [PHP 5.3] Perte de caractères lors d'une lecture de fichier
    Par Vince57 dans le forum Langage
    Réponses: 2
    Dernier message: 28/08/2010, 19h03
  3. stack smashing detected lors d'une lecture de fichier
    Par Dave62 dans le forum Débuter
    Réponses: 5
    Dernier message: 06/11/2009, 13h50
  4. creer un XMLNode sans une lecture de fichier XML
    Par bruman dans le forum Flash
    Réponses: 1
    Dernier message: 06/01/2009, 13h37
  5. Réponses: 11
    Dernier message: 27/04/2006, 08h56

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