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 :

Création de fichiers XML DataSet


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 307
    Par défaut Création de fichiers XML DataSet
    Bonjour à tous,

    J'ai un petit soucis donc en fait j'ai un webservice C# qui interrogent une base de données SQL Server et son client php qui récupère les résultats des requêtes.
    Je souhaiterai mettre en place un système de récupération des données en XML c'est possible en faisant DataSet.WriteXml mais le problème c'est que j'ai certaines méthodes de mon webservice qui sont appelées plusieurs fois donc les résultats s'écrasent, à la fin dans mon fichier j'ai le résultat de la dernière exécution de la méthode ListAGD dans cet exemple.
    Comment dois-je procéder ?

    Merci d'avance

    Voici un peu de code :

    Webservice C# :

    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 List<AGD> ListAGD(string d, int ctcincde)
            {
     
                DataSet monDataSet = co.getQuery(r.getListeAGD(d, ctcincde));
     
                List<AGD> maliste = new List<AGD>();
     
                try
                {
                    foreach (DataRow dr in monDataSet.Tables[0].Rows)
                    {
                        AGD row = new AGD();
     
                        row.WrkTypPnt           = (bool)dr["WrkTypPnt"];
                        row.OrigCpyAddrIncde    = (int)dr["OrigCpyAddrIncde"];
                        row.WrkDsc              = dr["WrkDsc"].ToString();
     
     
                        try
                        {
                            row.RqtSolLimDte    = (DateTime)dr["RqtSolLimDte"];
                            row.AgdDoneDte      = (DateTime)dr["AgdDoneDte"];
                        }
                        catch
                        {}
     
     
                        maliste.Add(row);
                    }
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.Message );
                }
     
                //on récupère le résultat de la requête dans un fichier XML
                monDataSet.WriteXml("C:\\ListeAGD.xml");
     
                return maliste;
            }
    Client PHP :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $arrayAGD = array('d'=>date("d/m/y",$Date),'ctcincde'=> $ctcincde);
    $retourAGD=$client->ListAGD($arrayAGD);

  2. #2
    Membre éclairé
    Inscrit en
    Juillet 2010
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 41
    Par défaut
    Bonjour.

    Tu pourrais essayer dans un premier temps de charger les données de ton fichier dans un DataSet en appelant la méthode ReadXml.

    Puis une fois que tu as fini ton traitement dans l'autre DataSet, tu merges les deux en un seul (je crois que les DataSet on une méthode pour cela) et tu appelle ton WriteXml.

    Cordialement.

  3. #3
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 307
    Par défaut
    Merci pour ta réponse, peux-tu me proposer un exemple stp ? Ça me permettra de mieux visualiser ce que tu veux dire

    Edit : J'ai essayé quelque chose en fonction de ta suggestion, j'ai donc rajouté ça au début de la méthode :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DataSet charger = new DataSet();
    charger.ReadXml("C:\\ListeAGD.xml");
    Puis à la fin :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    //on récupère le résultat de la requête dans un fichier XML
    monDataSet.WriteXml("C:\\ListeAGD.xml");
    charger.Merge(monDataSet, true, MissingSchemaAction.Ignore);
    Cependant ça ne fonctionne pas

  4. #4
    Membre éclairé
    Inscrit en
    Juillet 2010
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 41
    Par défaut
    En fait à la fin c'est plutôt le dataset charger qu'il faut sauvegarder car c'est dans celui-ci que tu merge les données.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    charger.Merge(monDataSet, true, MissingSchemaAction.Ignore);
    charger.WriteXml("C:\\ListeAGD.xml");
    Cordialement.

  5. #5
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 307
    Par défaut
    Bonjour,

    Merci pour ta nouvelle proposition, je viens de la tester à l'instant mais hélas même en procédant comme ça, ça ne fonctionne pas.

    Edit: au finale j'avais oublié un petit truc et ton idée fonctionne parfaitement merci beaucoup !

    Edit 2 : En fait, quand je rafraichis ma page il me fait un doublon des données il manque quelque chose

  6. #6
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 307
    Par défaut
    Bonjour,

    J'ai toujours un problème XML, j'arrive bien à ajouter les données mais il me crée autant d'élément racine que d'appels à la fonction.
    Est-il possible de définir un seul élément racine pour un ensemble d'appel d'un fonction ?

    Merci d'avance

    Voilà à quoi ressemble ma dernière version de la fonction :

    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
     public void ListAgdToXML(string d, int ctcincde)
            {
                DataSet ds = new DataSet();
                DataSet monDataSet = co.getQuery(r.getListeAGD(d, ctcincde));
     
                string filename = @"C:\test.xml";
     
                try
                {
                    if (File.Exists(filename))
                    {
                        ds.ReadXml(filename, XmlReadMode.Fragment);
                        ds.Merge(monDataSet, true, MissingSchemaAction.Ignore);
                    }
     
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.Message);
                }
     
                FileStream fs = new FileStream(filename, FileMode.Append);
                monDataSet.WriteXml(fs);
                fs.Close();
            }

  7. #7
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 307
    Par défaut
    j'ai fini par trouver une solution, je la joins au cas où ça puisse servir à quelqu'un :

    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
    68
    69
    70
    71
    72
    73
    74
            public void ListPecToXml(string d, int ctcincde)
            {
                DataSet dsfromXML = new DataSet();
                dsfromXML.Tables.Add("Table1");
                dsfromXML.Tables[0].Columns.Add("RqtPecFromDte", typeof(DateTime));
                dsfromXML.Tables[0].Columns.Add("RqtPecToDte", typeof(DateTime));
                dsfromXML.Tables[0].Columns.Add("RqtPecInCde", typeof(int));
                dsfromXML.Tables[0].Columns.Add("AgdInCde", typeof(int));
                dsfromXML.Tables[0].Columns.Add("WrkDsc", typeof(String));
                dsfromXML.Tables[0].Columns.Add("WrkExCde", typeof(String));
                dsfromXML.Tables[0].Columns.Add("RqtNatExCde", typeof(String));
                dsfromXML.Tables[0].Columns.Add("CtcInCde", typeof(int));
     
                DataSet dsTech = new DataSet();
                dsTech.Tables.Add("Table1");
                dsTech.Tables[0].Columns.Add("RqtPecFromDte", typeof(DateTime));
                dsTech.Tables[0].Columns.Add("RqtPecToDte", typeof(DateTime));
                dsTech.Tables[0].Columns.Add("RqtPecInCde", typeof(int));
                dsTech.Tables[0].Columns.Add("AgdInCde", typeof(int));
                dsTech.Tables[0].Columns.Add("WrkDsc", typeof(String));
                dsTech.Tables[0].Columns.Add("WrkExCde", typeof(String));
                dsTech.Tables[0].Columns.Add("RqtNatExCde", typeof(String));
                dsTech.Tables[0].Columns.Add("CtcInCde", typeof(int));
     
                dsTech = co.getQuery(r.getListPEC(d, ctcincde));
     
                string m;
                string day;
                if (DateTime.Today.Month < 10)
                {
                    m = "0" + DateTime.Today.Month.ToString();
                }
                else
                {
                    m = DateTime.Today.Month.ToString();
                }
     
                if (DateTime.Today.Day < 10)
                {
                    day = "0" + DateTime.Today.Day.ToString();
                }
                else
                {
                    day = DateTime.Today.Day.ToString();
                }
     
                string today = DateTime.Today.Year.ToString() + m + day;
     
                string filename = @"C:\Inetpub\wwwroot\appdispatch\pec_" + today + ".xml";
     
                try
                {
     
                    if (File.Exists(filename))
                    {
                        dsfromXML.ReadXml(filename);
     
                    }
                    else
                    {
                        dsfromXML = dsTech;
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
                dsfromXML.Merge(dsTech);
                FileStream fs = new FileStream(filename, FileMode.OpenOrCreate);
     
                dsfromXML.WriteXml(fs);
     
                fs.Close();
            }

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

Discussions similaires

  1. [MOSS 2007] Création automatique fichier XML pour BDC
    Par frechy dans le forum SharePoint
    Réponses: 6
    Dernier message: 06/03/2009, 11h11
  2. [DTD] Création de fichier XML
    Par ZeKiD dans le forum Format d'échange (XML, JSON...)
    Réponses: 7
    Dernier message: 20/02/2008, 15h27
  3. [DOM] création de fichier XML avec PHP
    Par cortex007 dans le forum Bibliothèques et frameworks
    Réponses: 7
    Dernier message: 09/12/2007, 11h31
  4. création de fichier xml : indentation du code généré
    Par DonKnacki dans le forum VBScript
    Réponses: 4
    Dernier message: 07/11/2007, 13h45
  5. [XSLT] Création de fichier XML dynamique avec PHP
    Par daninho dans le forum Bibliothèques et frameworks
    Réponses: 10
    Dernier message: 02/02/2006, 11h18

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