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

C# Discussion :

Parser un fichier XML


Sujet :

C#

  1. #1
    Membre expert


    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2006
    Messages : 970
    Points : 3 304
    Points
    3 304
    Par défaut Parser un fichier XML
    Bonjour, j'ai quelques soucis pour parser un fichier XML et y récupérer certaines informations.

    Voici un morceau d'exemple de ce fichier :

    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
     
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <message>
     <folder>
      <transaction>
        <item>
     ......
        </item>
        <item>
         <id S="ID-K" SV="1.0">9</id>
         <cd S="CD-ITEM" SV="1.0">lab</cd>
         <cd S="LOCAL" SL="local" DN="Créatinine" L="F" SV="1.0">CR_ind</cd>
         <content>
          <decimal>34.8</decimal>
          <unit>
           <cd S="LOCAL" SL="local" DN="mg/L" L="F" SV="1.0">mg/L</cd>
          </unit>
          <minref>
           <decimal>7.2</decimal>
          </minref>
          <maxref>
           <decimal>11.8</decimal>
          </maxref>
         </content>
         <beginmoment>
          <date>2012-11-10</date>
          <time>05:35:00</time>
         </beginmoment>
         <iscomplete>true</iscomplete>
         <isvalidated>true</isvalidated>
         <confirmationmoment>
          <date>2012-11-10</date>
          <time>07:28:47</time>
         </confirmationmoment>
         <validationmoment>
          <date>2012-11-10</date>
          <time>07:31:09</time>
         </validationmoment>
         <severity>
          <cd S="CD-SEVERITY" SV="1.0">abnormal</cd>
          <cd S="LOCAL" SL="local" DN="abnormal" L="F" SV="1.0">1</cd>
         </severity>
         <urgency>
          <cd S="CD-URGENCY" SV="1.0">asap</cd>
          <cd S="LOCAL" SL="local" DN="Urgent" L="F" SV="1.0">2</cd>
         </urgency>
        </item>
        <item>
     ......
        </item>
      </transaction>
     </folder>
    </message>
    Je dois par exemple récupérer la valeur du noeud "CR_ind" donc 34.8.

    En VB6 je procédait comme ceci :

    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
     
    Set objXml = New DOMDocument40
     
    If objXml.loadXML(xml) Then
     
    For k = 0 To objXml.selectNodes("/message/folder/transaction/heading/item").length - 1
     
       Set xmlItem = objXml.selectNodes("/message/folder/transaction/heading/item").Item(k)
     
       If UCase(xmlItem.selectSingleNode("cd[@S='LOCAL']").Text) = "CR_IND" Or UCase(xmlItem.selectSingleNode("cd[@S='LOCAL']").Text) = "CRX" Or UCase(xmlItem.selectSingleNode("cd[@S='LOCAL']").Text) = "CRU" Then
          If Not xmlItem.selectSingleNode("content/decimal") Is Nothing Then
             obj.CreatAfterOneMonth = xmlItem.selectSingleNode("content/decimal").Text
             Exit For
          End If
        End If
        DoEvents
    Next k
    Pour le faire en C# j'ai un peu du mal je ne parvient pas à parcourir mon arborescence

    J'ai fais un truc du genre mais en passant en debug je ne vois jamais le nœud qui m’intéresse :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
     
    doc.Load(sr);
     
    System.Xml.XmlElement  element = doc["message"]["folder"]["transaction"]["heading"];
     
    foreach (System.Xml.XmlElement CurrentElement in element.ChildNodes)
    {
     
    }
     
    sr.Close();
    Si quelqu'un aurait une idée pour me dépanner ...

    Merci d'avance

  2. #2
    Membre expert
    Avatar de GuruuMeditation
    Homme Profil pro
    .Net Architect
    Inscrit en
    Octobre 2010
    Messages
    1 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : .Net Architect
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 705
    Points : 3 570
    Points
    3 570
    Par défaut
    Tu peux aussi utiliser SelectNodes, comme en VB6

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    332
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2002
    Messages : 332
    Points : 502
    Points
    502
    Par défaut
    Utilises XPath.

    Tutoriel

  4. #4
    Membre expert


    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2006
    Messages : 970
    Points : 3 304
    Points
    3 304
    Par défaut
    Merci à vous 2 pour votre aide après quelques tests cela semble fonctionner à la perfection

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

Discussions similaires

  1. problème pour parser un fichier xml avec XML::Simple
    Par black_code dans le forum Modules
    Réponses: 3
    Dernier message: 30/01/2006, 19h32
  2. [xslt] Parser 2 fichiers XML
    Par malekms dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 30/12/2005, 12h22
  3. Parser un fichier XML
    Par Charlinecha dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 11/07/2005, 17h18
  4. [SAX] parser un fichier xml en Java
    Par royou dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 10/02/2005, 17h12
  5. parser des fichier .xml en perl
    Par djibril dans le forum Modules
    Réponses: 13
    Dernier message: 18/05/2004, 17h08

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