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 :

[C#][1.1]Parser XML plus proprement


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Laeticia
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 98
    Par défaut [C#][1.1]Parser XML plus proprement
    Bonjour !

    J'ai le fichier XML Suivant :

    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
    <?xml version="1.0"?>
     
    <labanquedusud>
    	<compte>
    		<numero_compte>123</numero_compte>
    		<nom_client>dupont</nom_client>
    			<operations>
    				<operation1>
    					<intitule>Virement</intitule>
    					<debit>0</debit>
    					<credit>100</credit>
    				</operation1>
     
    				<operation2>
    					<intitule>Carrefour</intitule>
    					<debit>50.80</debit>
    					<credit>0</credit>
    				</operation2>
     
    				<operation3>
    					<intitule>Restaurant</intitule>
    					<debit>78.10</debit>
    					<credit>0</credit>
    				</operation3>
     
    				<operation4>
    					<intitule>Essence</intitule>
    					<debit>28</debit>
    					<credit>0</credit>
    				</operation4>
     
    				<operation5>
    					<intitule>SNCF</intitule>
    					<debit>9.20</debit>
    					<credit>0</credit>
    				</operation5>
     
    			</operations>
    	</compte>
    </labanquedusud>
    Et je souhaiterai le parser correctement.

    J'ai déjà un début mais ce n'est pas propre

    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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    		public void ChargerXML(String str, Form1 Feuille1)
    		{
    				Feuille1.label1.Text=str;
     
    				string FichierXML = str;
     
    				XmlNodeList ListeNoeud;
    			XmlNodeList ListeNoeud2;
     
    			try 
    			{
    				XmlDocument XmlDoc = new XmlDocument();
    				XmlDoc.Load(str+=".xml");
    				ListeNoeud = XmlDoc.SelectNodes("/labanquedusud/compte");
    			ListeNoeud2 = XmlDoc.SelectNodes("/labanquedusud/compte/operations/operation1");
     
    				foreach(XmlNode NoeudXml in ListeNoeud)
    				{
    					#region declarations
     
    					String numCpt;
    					String nomClt;
    					//String Operation1;
     
    					#endregion
     
    					numCpt=NoeudXml.ChildNodes.Item(0).InnerText;
    					nomClt=NoeudXml.ChildNodes.Item(1).InnerText;
    					//Operation1=NoeudXml.ChildNodes.Item(2).InnerText;
     
    					Console.WriteLine(numCpt);
    					Console.WriteLine(nomClt);
    					//Console.WriteLine(Operation1);
    					Feuille1.label1.Text=nomClt;
    				}
     
    				foreach(XmlNode NoeudXml2 in ListeNoeud2)
    				{
    					#region declaration
    						String operation1;
    						String operation2;
    					String operation3;
     
    					#endregion
     
     
     
     
    					operation1=NoeudXml2.ChildNodes.Item(0).InnerText;
    					operation2 = NoeudXml2.ChildNodes.Item(1).InnerText;
    					operation3= NoeudXml2.ChildNodes.Item(2).InnerText;
    					Console.WriteLine(operation1);
    					Console.WriteLine(operation2);
    					Console.WriteLine(operation3);
     
     
     
    				}
     
     
    			}
    			catch (Exception ex)
    				  {
    					Console.WriteLine(ex);
    				  }
     
    			}


    Ici on le voit bien si je veux retirer les opérations 1, 2, 3, 4 et 5 je dois refaire 5 fois le parsage
    C'est pas propre et c'est pas professionel

    Alors je ne vois pas comment procéder !

    Si vous pouviez m'aider car là je buggueee

    Merci de vos réponses
    Environnement: Visual Studio .net 2003 fr

    Framework: Version 1.1.4322

    OS: Microsoft Windows Server 2003 fr

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 57
    Par défaut
    Je ne comprends pas ton fichier XML :

    Je travaille pour ma part avec un fichier XML sans ordre de grandeur dans le nom des noeuds mais plutôt un attribut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <operations>
      <operation order="1">
    [...]
      </operation>
      <operation order="2">
    [...]
      </operation>
      <operation order="3">
    [...]
      </operation>
    </operations>
    Il suffit d'ouvrir le fichier XML, de se positionner sur operations
    et de faire un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    operation=node.firstChild();
    while( operation != null ) {
    // je travaille sur l'operation courante
    [...]
     
      operation=operation.nextSibling(); // on prend son frere
    }

  3. #3
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    Citation Envoyé par murlock
    Je travaille pour ma part avec un fichier XML sans ordre de grandeur dans le nom des noeuds mais plutôt un attribut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <operations>
      <operation order="1">
    [...]
      </operation>
      <operation order="2">
    [...]
      </operation>
      <operation order="3">
    [...]
      </operation>
    </operations>
    +1

  4. #4
    Membre Expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Par défaut
    Si ce n'est pas toi l'auteur du fichier XMl (en bref que tu ne peux pas appliquer la méthode proposée au dessus), il te reste toujours une solution :
    Code VB .Net (http://convertisseur.developpez.com pour convertir en C#)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Dim XmlDoc = new XmlDocument()
    XmlDoc.Load("")
    Dim Operations = XmlDoc.FirstChild.FirstChild
    For Item as Integer = 0 to 5
       Dim Opp as XmlElement = Operations.GetElementsByTagName("operation" + Item)(0)
       ' Je fais ce que je veux avec l'opération ex: Array(Item)=Opp
    Next

  5. #5
    Membre expérimenté Avatar de toniolol
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2005
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 281
    Par défaut
    Salut,
    je travaille souvent avec des fichiers xml et le plus simple pour moi est de les charger dans un DataSet (.ReadXML).
    Après l'accès aux données est simple, rapide et maniable.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 57
    Par défaut
    Il y a aussi la solution avec XPath qui est bien pratique. Par contre, je ne sais pas les différences en le framework 1.1 et 2.0 sur les possibilités de traitement XML (dataset ou xpath)

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 57
    Par défaut
    Citation Envoyé par toniolol
    Salut,
    je travaille souvent avec des fichiers xml et le plus simple pour moi est de les charger dans un DataSet (.ReadXML).
    Après l'accès aux données est simple, rapide et maniable.

    Ca dépend de l'usage :
    sur l'appli que je refais, je garde le fichier XML en mémoire et chaque objet graphique pointe directement sur le noeud XML placé dans le tag :
    J'ajoute le handler sur les objets crée dynamiquement et pouf

    A chaque event de l'utilisateur, j'ai directement mes données (et ses fils)
    cf http://www.developpez.net/forums/sho...d.php?t=154379

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

Discussions similaires

  1. [XML] Parser du XML plus facilement
    Par gilloddon dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 04/09/2011, 20h55
  2. XML plus rapide a parser selon sa structure?
    Par tamiii dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 26/09/2009, 07h31
  3. [SAX] NoSuchElementException sur parser XML
    Par iceman dans le forum Format d'échange (XML, JSON...)
    Réponses: 5
    Dernier message: 17/05/2004, 14h42
  4. parser xml
    Par billout dans le forum C++Builder
    Réponses: 4
    Dernier message: 20/11/2003, 11h08
  5. Parser XML
    Par miloux32 dans le forum XML/XSL et SOAP
    Réponses: 4
    Dernier message: 18/07/2003, 03h17

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