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

Silverlight Discussion :

Ajout dans un fichier xml en silverlight 3


Sujet :

Silverlight

  1. #1
    Membre du Club
    Inscrit en
    Avril 2009
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 128
    Points : 43
    Points
    43
    Par défaut Ajout dans un fichier xml en silverlight 3
    Bonjour
    J'ai un fichier xml qui se trouve sur mon client silverlight , je veux ajouter des element au fichier
    voila j'ai essayé de faire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    XDocument MyNamePro = XDocument.Load("File1.xml");
                    Person process = new Person()
                    {
                        DateCreation = EnterDate.Text.Trim(),
                        ProcessNom=MyProcess_Name.Text.Trim()
     
     
                    };
    Mais rien ne s'ajoute dans mon fichier File1.xml ??
    Alors c'est quoi le pblme ???
    Merci d'avance

  2. #2
    Membre émérite
    Avatar de Samuel Blanchard
    Homme Profil pro
    Expert .NET
    Inscrit en
    Février 2010
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France

    Informations professionnelles :
    Activité : Expert .NET

    Informations forums :
    Inscription : Février 2010
    Messages : 1 504
    Points : 2 682
    Points
    2 682
    Par défaut
    Le problème c'est que ta classe Person ne va pas sauter dans le fichier XML toute seule comme une grande.
    Faut chercher un peu quand même
    http://www.silverlightshow.net/items...erlight-2.aspx
    .
    Pas de question technique en MP, merci.
    .
    Un emulator Gameboy Color pour Windows Phone ?
    c'est moi qui l'ai fait

  3. #3
    Membre du Club
    Inscrit en
    Avril 2009
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 128
    Points : 43
    Points
    43
    Par défaut
    Merci Samuel , je vais essayer encore une fois j'espèr que le lien pourra me debloquer

  4. #4
    Membre du Club
    Inscrit en
    Avril 2009
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 128
    Points : 43
    Points
    43
    Par défaut
    Bonjour
    Alors voilà ce que je fais :
    j'ai crée une classe personne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     public class Person
     
     {
     
         public string FirstName { get; set; }
     
         public string LastName { get; set; }
     
     
     
     }
    Dans Page.xaml.cs voila ce que j'ai fais :
    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
     
     Person p1 = new Person()
     
                 {
     
                     FirstName = "Martin",
     
                     LastName = "Mihaylov",
     
     
     
                  };
     
     XElement persons =
     
             new XElement( "persons",
     
                 new XElement( "person",
     
                     new XElement( "firstName", p1.FirstName ),
     
                     new XElement( "lastName", p1.LastName ),
     
                     ) ) );
     
     XDocument myXml = new XDocument( new XDeclaration( "1.0", "utf-8", "yes" ),
     
                     new XComment( "A Comment in the XML" ), persons );

    Alors ou peux je trouver mon fichier .xml cré ????? afin que je puisse le modifier !!!!!

  5. #5
    Expert confirmé Avatar de Lapinpanda
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2009
    Messages
    3 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 230
    Points : 4 913
    Points
    4 913
    Par défaut
    Tu connais les méthodes Write & Save?
    Merci d'utiliser en cas de résolution de votre problème

    N'oubliez pas non plus le petit pouce vert pour récompenser celui que vous a aidé

  6. #6
    Membre émérite
    Avatar de Samuel Blanchard
    Homme Profil pro
    Expert .NET
    Inscrit en
    Février 2010
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France

    Informations professionnelles :
    Activité : Expert .NET

    Informations forums :
    Inscription : Février 2010
    Messages : 1 504
    Points : 2 682
    Points
    2 682
    Par défaut
    1°) tu lis ton fichier XML pour que les données redeviennent des objets Person(voir "Reading an XML file" dans le tuto)
    2°) tu modifies tes objets Persons comme tu le souhaites
    3°) Tu réecris ton fichier (comme tu viens de le faire)
    .
    Pas de question technique en MP, merci.
    .
    Un emulator Gameboy Color pour Windows Phone ?
    c'est moi qui l'ai fait

  7. #7
    Membre du Club
    Inscrit en
    Avril 2009
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 128
    Points : 43
    Points
    43
    Par défaut
    Voila j'ai essayer de faire ce tu m'a dit
    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
     
    public void AddToXML()
            {
                XDocument myXML = XDocument.Load("File1.xml");
                Person p1 = new Person()
     
                {
                    ProcessNom=MyProcess_Name.Text,
                    DateCreation=EnterDate.Text
                };
     
                myXML.Element("myProcess").Add(new XElement("item",
     
                            new XElement("ProcessNom", p1.ProcessNom),
     
                            new XElement("DateCreation", p1.DateCreation)));
     
            }
    Ma fonction ne marche pas et le nouveau element n'est pas ajouté dans mon File1.xml
    je sais pas ou est le problème .....

  8. #8
    Membre émérite
    Avatar de Samuel Blanchard
    Homme Profil pro
    Expert .NET
    Inscrit en
    Février 2010
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France

    Informations professionnelles :
    Activité : Expert .NET

    Informations forums :
    Inscription : Février 2010
    Messages : 1 504
    Points : 2 682
    Points
    2 682
    Par défaut
    As-tu lu le paragraphe Reading an XML file dans le tuto http://www.silverlightshow.net/items...erlight-2.aspx comme je te l'ai conseillé ?
    .
    Pas de question technique en MP, merci.
    .
    Un emulator Gameboy Color pour Windows Phone ?
    c'est moi qui l'ai fait

  9. #9
    Membre du Club
    Inscrit en
    Avril 2009
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 128
    Points : 43
    Points
    43
    Par défaut
    oui j'ai lu cette partie , mais je pense que ça ne resolu pas mon pbleme puisque elle me permet d'afficher le continu de mon fichier xml alors que moi je veux ajouter des nouveaux element à mon fichier .xml !!!!

  10. #10
    Membre émérite
    Avatar de Samuel Blanchard
    Homme Profil pro
    Expert .NET
    Inscrit en
    Février 2010
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France

    Informations professionnelles :
    Activité : Expert .NET

    Informations forums :
    Inscription : Février 2010
    Messages : 1 504
    Points : 2 682
    Points
    2 682
    Par défaut
    Le fait de lire ton fichier te permet de récupérer les objet persons (si ce n'est pas déjà fait) dans une liste puis d'y ajouter/modifier/détruire les personnes que tu souhaites. Tu reconstruis ensuite ton fichier XML à partir de cette liste.
    .
    Pas de question technique en MP, merci.
    .
    Un emulator Gameboy Color pour Windows Phone ?
    c'est moi qui l'ai fait

  11. #11
    Membre du Club
    Inscrit en
    Avril 2009
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 128
    Points : 43
    Points
    43
    Par défaut
    Alors voila j'ai essayé de faire ce que tu m'as dit Samuel , mais ma fonction ne marche pas
    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
     
     
     private void LinkProcessToXML(object sender, RoutedEventArgs e)
            {
                //Lire mon fichier xml et recuperer les objets dans une liste
                XDocument myXML = XDocument.Load("File1.xml");
     
                List<Person> myListPerson =
                    (from item in myXML.Descendants("item")
                     select new Person()
                     {
                         ProcessNom = item.Element("ProcessNom").Value,
                         DateCreation = item.Element("DateCreation").Value
     
                     }).ToList();
                //Ajouter un Element A myListPerson
                Person p1 = new Person()
                {
                    ProcessNom = MyProcess_Name.Text,
                    DateCreation = EnterDate.Text
                };
     
                myListPerson.Add(p1);
     
                myXML.Element("myProcess").Add(new XElement("item",
     
                        new XElement("ProcessNom", p1.ProcessNom),
     
                        new XElement("DateCreation", p1.DateCreation)
                        ));
     
            }

    ou le problème ???

  12. #12
    Membre émérite
    Avatar de Samuel Blanchard
    Homme Profil pro
    Expert .NET
    Inscrit en
    Février 2010
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France

    Informations professionnelles :
    Activité : Expert .NET

    Informations forums :
    Inscription : Février 2010
    Messages : 1 504
    Points : 2 682
    Points
    2 682
    Par défaut
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
                myXML.Element("myProcess").Add(new XElement("item",
     
                        new XElement("ProcessNom", p1.ProcessNom),
     
                        new XElement("DateCreation", p1.DateCreation)
                        ));

    Le plus simple est de créer un nouveau document afin de recréer la structure de ton fichier XML à partir de la liste que tu auras manipulé.

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    XDocument myXMLSaved = new XDocument();
    // ici tu enregistres tous les elements de la liste 
    ...
    // la tu sauves
    myXMLSaved.Save("File1.xml"); // ecrasement du fichier

    Si tu as une erreur donne nous l'exception car sinon on ne pourras pas t'aider.
    .
    Pas de question technique en MP, merci.
    .
    Un emulator Gameboy Color pour Windows Phone ?
    c'est moi qui l'ai fait

  13. #13
    Membre du Club
    Inscrit en
    Avril 2009
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 128
    Points : 43
    Points
    43
    Par défaut
    J'ai essayé mais il ya deux erreurs :
    1-
    Erreur 4 La méthode surchargée correspondant le mieux à 'System.Xml.Linq.XDocument.Save(System.Xml.XmlWriter)' possède des arguments non valides
    2-
    Erreur 5 Argument '1'*: impossible de convertir de 'string' en 'System.Xml.XmlWriter'

  14. #14
    Membre émérite
    Avatar de Samuel Blanchard
    Homme Profil pro
    Expert .NET
    Inscrit en
    Février 2010
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France

    Informations professionnelles :
    Activité : Expert .NET

    Informations forums :
    Inscription : Février 2010
    Messages : 1 504
    Points : 2 682
    Points
    2 682
    Par défaut
    c'est parcequ'il ne prend pas de string (path) en paramètre mais un flux de type XmlWriter par exemple.

    il y a un exemple ici de sauvegarde :

    http://msdn.microsoft.com/en-us/libr...(v=vs.95).aspx
    .
    Pas de question technique en MP, merci.
    .
    Un emulator Gameboy Color pour Windows Phone ?
    c'est moi qui l'ai fait

  15. #15
    Membre du Club
    Inscrit en
    Avril 2009
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 128
    Points : 43
    Points
    43
    Par défaut
    Merci beaucoup Samuel
    voila j'ai modifié un peu mais je sais pas comment faire l'ecrasement de mon fichier File1.xml voila ce que j'ai fait
    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
     
     
    private void LinkProcessToXML(object sender, RoutedEventArgs e)
            {
                //Lire mon fichier xml et recuperer les objets dans une liste
                XDocument myXML = XDocument.Load("File1.xml");
     
                List<Person> myListPerson =
                    (from item in myXML.Descendants("item")
                     select new Person()
                     {
                         ProcessNom = item.Element("ProcessNom").Value,
                         DateCreation = item.Element("DateCreation").Value
     
                     }).ToList();
                //Ajouter un Element A myListPerson
                Person p1 = new Person()
                {
                    ProcessNom = MyProcess_Name.Text,
                    DateCreation = EnterDate.Text
                };
     
                //***** Save Xdocument to xWriter ***** //*** Enregistrer un xdocument dans un xwriter*** // 
     
                StringBuilder outpout = new StringBuilder();
                StringBuilder sb = new StringBuilder();
                XmlWriterSettings xws = new XmlWriterSettings();
                xws.OmitXmlDeclaration = true;
                xws.Indent = true;
                using (XmlWriter xw = XmlWriter.Create(sb, xws))
                {
                    XDocument myXMLSaved = new XDocument (new XElement("ProcessNom", p1.ProcessNom),
                         new XElement("DateCreation", p1.DateCreation));
                    myXMLSaved.Save(xw);
                }
            }

  16. #16
    Membre émérite
    Avatar de Samuel Blanchard
    Homme Profil pro
    Expert .NET
    Inscrit en
    Février 2010
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France

    Informations professionnelles :
    Activité : Expert .NET

    Informations forums :
    Inscription : Février 2010
    Messages : 1 504
    Points : 2 682
    Points
    2 682
    Par défaut
    D'abord, tu dois ajouter dans le XDocument myXMLSaved l'ensemble de tes objets Person qui se trouve dans la liste myListPerson que tu viens de charger et de modifier.
    .
    Pas de question technique en MP, merci.
    .
    Un emulator Gameboy Color pour Windows Phone ?
    c'est moi qui l'ai fait

  17. #17
    Membre du Club
    Inscrit en
    Avril 2009
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 128
    Points : 43
    Points
    43
    Par défaut
    et comment pourrai je faire ça ???

  18. #18
    Membre du Club
    Inscrit en
    Avril 2009
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 128
    Points : 43
    Points
    43
    Par défaut
    alors si je fai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    myXMLSaved.Add(myList);
    ça permet de sauver le continu de ma liste dans le xdocument ???

  19. #19
    Membre du Club
    Inscrit en
    Avril 2009
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 128
    Points : 43
    Points
    43
    Par défaut
    Me voilà de nouveau , j'ai pas trouvé encore une solution :
    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
     
    private void Button_Click(object sender, RoutedEventArgs e)
            {
     
                Person p1 = new Person()
     
                {
     
                    FirstName = "Rim",
     
                    LastName = "Laatar"
     
                };
     
                Person p2 = new Person()
     
                {
     
                    FirstName = "Lotfi",
                    LastName = "Ben Said"
                };
     
     
                //ICI doc  contient le continu intial de mon fichier xml
                XDocument doc = XDocument.Load("File.xml");
                StringBuilder r = new StringBuilder();
                r.Append(doc + Environment.NewLine);
                MtTextBox.Text = r.ToString();
     
     
                //Ici On va essayer de changer le continu de mon fichier
     
                List<Person> personsList =
     
                (from person in doc.Descendants("person")
     
     
     
                 select new Person()
     
                 {
     
                     FirstName = person.Element("FirstName").Value,
     
                     LastName = person.Element("LastName").Value,
     
     
                 }).ToList();
     
                doc.Element("persons").Add(new XElement("person",
     
                            new XElement("FirstName", p2.FirstName),
     
                            new XElement("LastName", p2.LastName)
     
     
                               ));
                personsList.Add(p2);
     
                //on va ecraser le continu de File.xml  doc.save("File.xml");
                StringBuilder strb = new StringBuilder();
                strb.Append(doc + Environment.NewLine);
                MyText2.Text = strb.ToString();
     
            }
    Le problème ce que si je fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    doc.save("File.xml");
    ça peu pas marcher , alors comment puis je ecraser le continu de File.xml afin de le reconstruire a partir de mon xDocument doc !!!!!
    Merci

  20. #20
    Expert confirmé Avatar de Lapinpanda
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2009
    Messages
    3 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 230
    Points : 4 913
    Points
    4 913
    Par défaut
    Quand on fait des Save il n'existe pas l'option Overwrite????
    Merci d'utiliser en cas de résolution de votre problème

    N'oubliez pas non plus le petit pouce vert pour récompenser celui que vous a aidé

Discussions similaires

  1. [JDOM] Ajout dans un fichier XML
    Par khaledam dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 18/05/2012, 14h15
  2. Ajout dans un fichier XML
    Par geniecom dans le forum APIs
    Réponses: 1
    Dernier message: 28/05/2009, 14h00
  3. ajout dans un fichier xml sans l'écraser
    Par sws2008 dans le forum Windows Forms
    Réponses: 5
    Dernier message: 05/01/2009, 12h10
  4. [DOM] Ajouter dans un fichier XML
    Par noussa_nouha dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 20/07/2006, 12h53
  5. ajouter dans un fichier xml
    Par hamma2 dans le forum APIs
    Réponses: 4
    Dernier message: 29/09/2003, 12h57

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