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 :

Fusionner plusieurs fichiers xml et les charger dans une DB


Sujet :

C#

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2016
    Messages : 12
    Points : 6
    Points
    6
    Par défaut Fusionner plusieurs fichiers xml et les charger dans une DB
    Bonjour,
    Je travaille sur un projet où on nous demande de fussionner plusieurs fichiers xml de même structure en un seul et d'écrire un code en c# qui permetra de charger les données du fichier xml dans la base de données.
    je suis vraiment perdu !!!
    Par quoi puis-je commencer ?

  2. #2
    Membre chevronné
    Homme Profil pro
    edi
    Inscrit en
    Juin 2007
    Messages
    895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : edi

    Informations forums :
    Inscription : Juin 2007
    Messages : 895
    Points : 1 911
    Points
    1 911
    Par défaut
    Tu peux regarder du côté de la classe XmlSerializer ainsi que des XmlElement et XmlAttribute.
    Considérons ce fichier :
    Code xml : 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
    <?xml version="1.0" encoding="utf-8" ?>
     
    <messageList xmlns="http://msg.example.com">
      <message id="19">
        <from id="45">
          <login>jleneuf</login>
          <displayName>Jérémy Leneuf</displayName>
        </from>
        <to id="57">
          <login>aleneuf</login>
          <displayName>Antoine Leneuf</displayName>
        </to>
        <title>Bonjour</title>
        <content>Comment vas-tu ?</content>
      </message>
      <message id="20">
        <from id="57">
          <login>aleneuf</login>
          <displayName>Antoine Leneuf</displayName>
        </from>
        <to id="45">
          <login>jleneuf</login>
          <displayName>Jérémy Leneuf</displayName>
        </to>
        <title>Vacances</title>
        <content>Je suis en congé après-demain</content>
      </message>
    </messageList>
    Et celui-là :
    Code xml : 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
    <?xml version="1.0" encoding="utf-8" ?>
     
    <messageList xmlns="http://msg.example.com">
      <message id="36">
        <from id="45">
          <login>jleneuf</login>
          <displayName>Jérémy Leneuf</displayName>
        </from>
        <to id="57">
          <login>aleneuf</login>
          <displayName>Antoine Leneuf</displayName>
        </to>
        <title>Réunion</title>
        <content>Tu seras là vendredi ?</content>
      </message>
      <message id="67">
        <from id="57">
          <login>aleneuf</login>
          <displayName>Antoine Leneuf</displayName>
        </from>
        <to id="45">
          <login>jleneuf</login>
          <displayName>Jérémy Leneuf</displayName>
        </to>
        <title>Réunion</title>
        <content>Oui, j'ai pu m'organiser</content>
      </message>
    </messageList>

    Les classes suivante peuvent représenter leur contenu :
    Code C# : 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
    [XmlRoot("messageList", Namespace = "http://msg.example.com")]
        public class MessageList
        {
            [XmlElement("message")]
            public List<Message> Messages { get; set; }
        }
     
        public class Message
        {
            [XmlAttribute("id")]
            public int Id { get; set; }
     
            [XmlElement("from")]
            public User From { get; set; }
     
            [XmlElement("to")]
            public User To { get; set; }
     
            [XmlElement("title")]
            public string Title { get; set; }
     
            [XmlElement("content")]
            public string Content { get; set; }
        }
     
        public class User
        {
            [XmlAttribute("id")]
            public int Id { get; set; }
     
            [XmlElement("login")]
            public string Login { get; set; }
     
            [XmlElement("displayName")]
            public string DisplayName { get; set; }
        }

    Et le traitement :
    Code C# : 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
    static void Main(string[] args)
            {
                Console.WriteLine("Démarrage...");
                try
                {
                    var fileNames = new[] { "messages1.xml", "messages2.xml" };
     
                    var allMsg = new MessageList { Messages = new List<Message>() };
                    var ser = new XmlSerializer(typeof(MessageList));
                    ser.UnknownAttribute += (s, e) => { Console.WriteLine("Attribut inconnu [{0}]", e.Attr.Name); };
                    ser.UnknownElement += (s, e) => { Console.WriteLine("Element inconnu [{0}]", e.Element.Name); };
     
                    foreach (var file in fileNames)
                    {
                        Console.WriteLine("Lecture du fichier {0}", file);
                        using (var reader = new FileStream(file, FileMode.Open))
                        {
                            var list = (MessageList)ser.Deserialize(reader);
                            allMsg.Messages.AddRange(list.Messages);
                        }
                    }
     
                    var fileName = "allMessages.xml";
     
                    using (var writer = new StreamWriter(fileName))
                    {
                        ser.Serialize(writer, allMsg);
                    }
     
                    using (var reader = new StreamReader(fileName))
                    {
                        var xml = reader.ReadToEnd();
                        Console.WriteLine(xml);
                    }
                }
                catch (Exception e)
                {
                    Console.WriteLine("Une erreur s'est produite : " + e.Message);
                }
                Console.WriteLine("Appuyez sur une touche pour continuer...");
                Console.ReadKey();
            }

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2016
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    Merci!!!
    mais ça ne résoud pas toujours mon probléme

  4. #4
    Membre chevronné
    Homme Profil pro
    edi
    Inscrit en
    Juin 2007
    Messages
    895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : edi

    Informations forums :
    Inscription : Juin 2007
    Messages : 895
    Points : 1 911
    Points
    1 911
    Par défaut
    Je ne vois pas ce qui peut te manquer.

  5. #5
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Salut,

    Citation Envoyé par Noxen Voir le message
    Je ne vois pas ce qui peut te manquer.
    en fait je crois qu'il veut fusionner les différents XML, pas les concaténer (quelles sont les règles de fusion ? no idea).
    Et une fois cela fait mettre les données dans une DB (dans un LOB ? via des champs dédiés ? no idea).
    Plus je connais de langages, plus j'aime le C.

  6. #6
    Membre chevronné
    Homme Profil pro
    edi
    Inscrit en
    Juin 2007
    Messages
    895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : edi

    Informations forums :
    Inscription : Juin 2007
    Messages : 895
    Points : 1 911
    Points
    1 911
    Par défaut
    En tout cas il y a assez pour récupérer les informations depuis un fichier xml ; à partir de là c'est lui qui sait ce qu'il veut faire comme traitement. Et pour l'insertion en base s'il ne connait pas à minima il faudra suivre un tutoriel sur les bases de donnes, le sql et pourquoi pas un ORM (comme NHibernate ou ENtity Framework) pour avoir des questions précises à poser.

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2016
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    le problème de fusion a été résolu. merci por votre aide.
    mon souci actuel est de récupérer les données du fichier XML fusionné et les insérer dans sql server 2008, toutes les tables devant contenir ses données ont déjà été crées.
    Je développe avec Visual Studio 2010 et je programma en C#
    merci a vous cordialement.


    Voici le fichiers XML fusionné en question
    fusion.xml

Discussions similaires

  1. coucou ! j'aurais besoin d'une aide sur frontpage svp
    Par moustic777 dans le forum Autres
    Réponses: 1
    Dernier message: 18/01/2009, 17h05
  2. besoin d'une aide concernant paint()
    Par ____22 dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 12/05/2008, 18h06
  3. Besoin d'une aide précieuse:
    Par Raideman dans le forum Flash
    Réponses: 5
    Dernier message: 20/04/2007, 16h19

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