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 :

C# Merge plusieurs XML


Sujet :

C#

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Février 2013
    Messages : 38
    Points : 24
    Points
    24
    Par défaut C# Merge plusieurs XML
    Bonjour à tous,

    J'ai actuellement une fonction qui peut me "fusionner" deux fichiers xml, ce qui me permet de récupérer des stats par la suite.
    Cependant, je peux fusionner que deux fichiers, ce qui est un peu embêtant.. J'aimerais donc pouvoir en charger autant que je veux mais j'avoue que je bloque..!

    Voici ma fonction actuelle :

    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
       public void Merge_Files()
            {
                XDocument doc;
                XDocument doc1;
     
                try
                {              
     
                    doc = XDocument.Load(listView2.Items[0].Text);
                    doc1 = XDocument.Load(listView2.Items[1].Text);
     
                    var headerDoc = doc.Root.Element("CallAccountingList");
     
                    var corpsDoc = doc.Root.Elements("CallAccounting");
                    var corpsDoc1 = doc1.Root.Elements("CallAccounting");
     
                    var merge = corpsDoc.Concat(corpsDoc1);
     
                    // Création du fichier XDocument de sortie
                    XNamespace aw = "http://www.w3.org/2001/XMLSchema-instance";
                    doc = new XDocument(
                        new XDeclaration("1.0", "utf-8", "yes"),
                        new XElement(aw + "CallAccountingList",
                            headerDoc,
                            merge));
     
                    // Transformer le XDocument en XmlDocument
                    result.LoadXml(doc.ToString());
                    result.Save("Merged_File.xml");
     
                    label4.Text = "Fusion done";             
     
                }
                catch (System.Exception ex)
                {
                    listView1.Items.Add("Erreur de fusion   :   " + ex);
                    Console.WriteLine(ex);              
                }
     
            }
    Merci !

  2. #2
    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
    Au lieu de travailler avec doc et doc1, tu te fais une liste de XDocument et tu fais un foreach qui accomplit les tâches déjà dans ton exemple de code...

    Pour ta source, ça peut être tous les XML d'un répertoire ou l'ensemble des contenus des textbox sur ta page.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Février 2013
    Messages : 38
    Points : 24
    Points
    24
    Par défaut
    Bonjour Babyneedle,

    Je me doute qu'il faut enlever doc et doc1, le soucis c'est que je n'ai pas encore l'habitude de travailler avec des listes...
    Donc si tu as un exemple que je puisse reproduire sur mon appli ça m'aiderai énormément !

    Merci

  4. #4
    Expert confirmé
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Points : 4 062
    Points
    4 062
    Par défaut
    Ca donnerait quelque chose comme :

    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
    public void Merge_Files()
    {
        try
        { 
            XDocument doc = XDocument.Load(listView2.Items[0].Text);
     
            var headerDoc = doc.Root.Element("CallAccountingList");
     
            var corpsDoc = doc.Root.Elements("CallAccounting");
     
            for (int i = 1; i < listView2.Items.Count; ++i);
            {
                string path = listView2.Items[i].Text;
     
                XDocument doc1 = XDocument.Load(path);
     
                var corpsDoc1 = doc1.Root.Elements("CallAccounting");
     
                corpsDoc = corpsDoc.Concat(corpsDoc1);
            }
     
            // Création du fichier XDocument de sortie
            XNamespace aw = "http://www.w3.org/2001/XMLSchema-instance";
            doc = new XDocument(
                        new XDeclaration("1.0", "utf-8", "yes"),
                        new XElement(aw + "CallAccountingList",
                            headerDoc,
                            corpsDoc));
     
            // Transformer le XDocument en XmlDocument
            result.LoadXml(doc.ToString());
            result.Save("Merged_File.xml");
     
            label4.Text = "Fusion done";             
        }
        catch (System.Exception ex)
        {
            listView1.Items.Add("Erreur de fusion   :   " + ex);
            Console.WriteLine(ex);              
        }
    }
    Formateur expert .Net/C#/WPF/EF Certifié MCP disponible sur Paris, province et pays limitrophes (enseignement en français uniquement).
    Mon blog : pragmateek.com

  5. #5
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Février 2013
    Messages : 38
    Points : 24
    Points
    24
    Par défaut
    Parfait ça fonctionne exactement comme je voulais ! Travail un peu mâché pour moi mais bon, à partir du moment où j'ai compris le code...

    Merci beaucoup Pragmateek

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

Discussions similaires

  1. [XSL] appel plusieurs xml dynamiquement
    Par laurentibus dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 01/04/2008, 10h47
  2. [XSLT] Fusion de plusieurs XML
    Par syvid dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 25/07/2006, 16h24
  3. [PHP] Transformation de plusieurs XML
    Par ammi2006 dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 07/05/2006, 09h38
  4. Interroger plusieurs xml avec un xsl
    Par lafracas dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 28/04/2006, 23h29
  5. [XSLT] Transformer plusieurs XML en même temps
    Par oamram dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 24/04/2006, 13h41

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