Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1556 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  [Resolu][C#.NET] XML -> Un lire des noeuds un après l'autre ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Resolu][C#.NET] XML -> Un lire des noeuds un après l'autre ?

n°1436203
ParadoX
Posté le 04-09-2006 à 12:41:06  profilanswer
 

Bonjour,
 
J'ai un fichier XML qui ressemble à ceci:
 

Code :
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <alleProfile>
  3.   <profil name="Tim">
  4.     <output>
  5.       <druck>
  6.         <druckanzahl>123</druckanzahl>
  7.         <papierart>A4 Ungelocht</papierart>
  8.         <rucksendung>Zum Kunde</rucksendung>
  9.         <kuvertierung>ja</kuvertierung>
  10.       </druck>
  11.     </output>
  12.   </profil>
  13.   <profil name="Test">
  14.     <output>
  15.       <druck>
  16.         <druckanzahl>456</druckanzahl>
  17.         <papierart>A4 Gelocht</papierart>
  18.         <rucksendung>Zum Kunde</rucksendung>
  19.         <kuvertierung>nein</kuvertierung>
  20.       </druck>
  21.     </output>
  22.   </profil>
  23.   <profil name="Neutest">
  24.     <output>
  25.       <archiv>
  26.         <archivdokumentklasse>Rechnung</archivdokumentklasse>
  27.       </archiv>
  28.     </output>
  29.   </profil>
  30. </alleProfile>


 
Il s'agit d'un fichier de gestion de profils pour une application. Maintenant, quand je veux charger un profil dans l'application, je cherche d'abord le noeud qui contient le nom de mon profil recherché:
 

Code :
  1. private void loadProfiles(string aFileName)
  2.         {
  3.             try
  4.             {
  5.                 // Profildatei Laden
  6.                 XmlTextReader reader = new XmlTextReader(aFileName);
  7.                 while (reader.Read())
  8.                 {
  9.                     // ProfilNamen auslesen und der Liste hinzufügen
  10.                     if(reader.NodeType == XmlNodeType.Element)
  11.                     {
  12.                         if(reader.Name.Equals("profil" ))
  13.                         {
  14.                             // Trouvé !!
  15.                         }
  16.                     }
  17.                 }
  18.                 reader.Close();
  19.             }
  20.             catch (System.IO.FileNotFoundException)
  21.             {
  22.                 // Rien
  23.             }
  24.         }


 
Et cela fonctionne plutot bien; mais voici mon probleme: une fois le profil trouvé, j'aimerais lire tout le contenu de la balise <output> récursivement, cad récupérer tous les sous-noeuds ainsi que leur contenu.
 
Quand je fais "MessageBox.Show("Inner XML = " + reader.ReadInnerXml());" à l'endroit du "//trouvé" dans le code d'en haut, j'obtiens tout le contenu de mon Output. Mais comment l'explorer à son tour ?
 
J'ai deja tenté avec un foreach, avec un nouveau reader et avec un getChildByID ... mais je n'y parviens pas...
Quelqu'un a une idée ?
 
Il me faut juste un moyen pour parcourir un noeud (profil) et de récupérer les valeurs des balises...
 
merci  :sweat:


Message édité par ParadoX le 04-09-2006 à 14:29:54

---------------
Pier noir la mèr - La chanson par HFR Band - Topic TrueCrypt
mood
Publicité
Posté le 04-09-2006 à 12:41:06  profilanswer
 

n°1436238
ParadoX
Posté le 04-09-2006 à 14:29:34  profilanswer
 
n°1436241
FrozenPala​din
Posté le 04-09-2006 à 14:32:19  profilanswer
 

Plutot que d'utiliser un XmlTextReader, tu peux utiliser XmlDocument.
 
Charge le fichier avec le methode Load.
 
XmlDocument fournit les outils un acces au document sous forme d'arbre. Chaque element est un noeud (XmlNode) et chaque noeud possede la liste de ses enfants (champs ChildNodes).
Avec cette representation, on peut facilement implenter les algos s'appliquants aux structures en arborescence ; et en particulier chercher recursivement un noeud.
 
edit : mouarf le temps de poster et grille


Message édité par FrozenPaladin le 04-09-2006 à 14:33:44
n°1436297
ParadoX
Posté le 04-09-2006 à 16:17:39  profilanswer
 

jep, c'était l'aspect récursif que javais oublié d'implémenter  :jap:


---------------
Pier noir la mèr - La chanson par HFR Band - Topic TrueCrypt

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  [Resolu][C#.NET] XML -> Un lire des noeuds un après l'autre ?

 

Sujets relatifs
[Delphi] utiliser des TEdit comme des tableaux edit[var].text [Résolu]Parsing XML via DOM4J
[Résolu] Macro supprimer une colonne [VB.NET] Sauvegarde/Restauration base SQL -> C'est possible?
[RESOLU] Flash : Alignement en 1er plan d'une animation[Delphi] problème MDI + Base de données + ListBox [Résolu]
[Resolu][DataGridView] Action quand on change la valeur d'une CheckBox[resolu][C# => Excel] : tableau à partir d'une appli windows en C#
[batch] [RESOLU] Enlever les " d'un fichier [.Net] Soucis assembly lors d'une migration
Plus de sujets relatifs à : [Resolu][C#.NET] XML -> Un lire des noeuds un après l'autre ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR