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 :

Problème de lecture d'un fichier XML


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2004
    Messages
    226
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 226
    Par défaut Problème de lecture d'un fichier XML
    Bonjour,

    J'ai un fichier XML qui représente un fichier tnsnames.ora (ORACLE) pour ceux qui connaissent, voici comment il est présenté :

    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
     
    - <SERVICE alias="ALIAS_DB">
    - <DESCRIPTION_LIST>
    - <DESCRIPTION>
    - <ADDRESS_LIST>
    - <ADDRESS>
      <PROTOCOL>TCP</PROTOCOL> 
      <HOST>HOSTNAME</HOST> 
      <PORT>1521</PORT> 
      </ADDRESS>
      </ADDRESS_LIST>
    - <CONNECT_DATA>
      <SERVICE_NAME>SERVICE_NAME</SERVICE_NAME> 
      </CONNECT_DATA>
      </DESCRIPTION>
      </DESCRIPTION_LIST>
      </SERVICE>
    J'aimerai le parcourir et pour chaque service récupérer l'alias et le port, j'ai regardé un peu la FAQ et fait un essai avec le code suivant qui devrait me renvoyer le port mais ca ne donne rien, si quelqu'un peut m'aider :

    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
    Public Sub TraiteXml2()
            Dim port As String
            Dim i As Integer = 0
            Dim XmlDoc As XmlDocument = New XmlDocument()
            XmlDoc.Load("D:\Sqlserver\Projects\ListeBaseOracleV2\ListeBaseOracleV2\tnsnames_ep.xml")
            Dim element As XmlNodeList
            element = XmlDoc.DocumentElement.GetElementsByTagName("ADDRESS")
            Dim noeud As XmlNode
     
            For Each noeud In element
                If noeud.LocalName = "PORT" Then
                    port = noeud.InnerText
                End If
            Next
     
        End Sub

  2. #2
    Rédacteur
    Avatar de Hinault Romaric
    Homme Profil pro
    Consultant
    Inscrit en
    Janvier 2007
    Messages
    4 570
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2007
    Messages : 4 570
    Billets dans le blog
    121
    Par défaut
    Je crois que GetElementsByTagName() se limite juste aux nœuds parents et n'entre pas dans les sous nœuds Essaye ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Dim element As XmlNodeList
            element = XmlDoc.SelectNodes("ADDRESS_LIST/ADDRESS")
            Dim noeud As XmlNode
     
            For Each noeud In element
                If noeud.LocalName = "PORT" Then
                    port = noeud.InnerText
                End If
            Next
    Vous souhaitez participer aux rubriques .NET ? Contactez-moi

    Si déboguer est l’art de corriger les bugs, alors programmer est l’art d’en faire
    Mon blog, Mes articles, Me suivre sur Twitter
    En posant correctement votre problème, on trouve la moitié de la solution

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    700
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 700
    Par défaut
    Bonjour,
    il manque l'arborescence complète pour arriver à ADDRESS, et la propriété childNodes pour analyser ses noeuds enfants :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
            Dim element As XmlNodeList
            element = XmlDoc.SelectNodes("SERVICE/DESCRIPTION_LIST/DESCRIPTION/ADDRESS_LIST/ADDRESS")
            Dim noeud As XmlNode
            Dim childNoeud As XmlNode
     
            For Each noeud In element
                For Each childNoeud In noeud.ChildNodes
                    If childNoeud.LocalName = "PORT" Then
                        port = childNoeud.InnerText
                        MessageBox.Show(port)
                    End If
                Next
            Next

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    700
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 700
    Par défaut
    Et encore plus simple avec le code du départ :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
            element = XmlDoc.DocumentElement.GetElementsByTagName("PORT")
            Dim noeud As XmlNode
     
            For Each noeud In element
                port = noeud.InnerText
                MessageBox.Show(port)
            Next

  5. #5
    Membre confirmé
    Inscrit en
    Décembre 2004
    Messages
    226
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 226
    Par défaut
    Citation Envoyé par chrismonoye Voir le message
    Et encore plus simple avec le code du départ :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
            element = XmlDoc.DocumentElement.GetElementsByTagName("PORT")
            Dim noeud As XmlNode
     
            For Each noeud In element
                port = noeud.InnerText
                MessageBox.Show(port)
            Next
    Merci ça fonctionne ! Par contre comment récupérer dans le même temps le nom du service ("ALIAS_DB" dans mon fichier XML) et le port ?

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    700
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 700
    Par défaut
    Je ne connais pas du tout Oracle.
    Dans le XMl, y a t'il plusieurs noeuds SERVICE ?
    Si oui, il doit y avoir un élément racine unique.
    Dans ce cas le début du XML serait utile à voir.

  7. #7
    Membre confirmé
    Inscrit en
    Décembre 2004
    Messages
    226
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 226
    Par défaut
    Citation Envoyé par Hinault Romaric Voir le message
    Je crois que GetElementsByTagName() se limite juste aux nœuds parents et n'entre pas dans les sous nœuds Essaye ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Dim element As XmlNodeList
            element = XmlDoc.SelectNodes("ADDRESS_LIST/ADDRESS")
            Dim noeud As XmlNode
     
            For Each noeud In element
                If noeud.LocalName = "PORT" Then
                    port = noeud.InnerText
                End If
            Next
    Malheureusement je n'ai aucun résultat avec cette méthode non plus.
    Il semble qu'il ne trouve aucune occurrence dans mon fichier XML, je ne comprends pas pourquoi, surement le XPATH qui ne lui convient pas.

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

Discussions similaires

  1. [JDOM] Problème de lecture d'un fichier XML avec Java
    Par thonath dans le forum Format d'échange (XML, JSON...)
    Réponses: 7
    Dernier message: 27/05/2014, 11h52
  2. Problème de lecture d'un fichier XML
    Par yamyoung dans le forum C#
    Réponses: 2
    Dernier message: 07/05/2012, 13h31
  3. problème de lecture d'un fichier xml spécifique
    Par f-mory dans le forum Développement de jobs
    Réponses: 0
    Dernier message: 23/10/2009, 15h53
  4. Problème de lecture d'un fichier XML d'InfoPath
    Par snadus dans le forum InfoPath
    Réponses: 7
    Dernier message: 06/06/2006, 14h45
  5. Problème de lecture dans un fichier xml
    Par Pyra dans le forum Langage
    Réponses: 2
    Dernier message: 18/12/2005, 00h13

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