begin process at 2010 02 10 04:21:45
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C#

 > 

Base de données

 > 

XML

 > 

Désérialisation XML dans un DataSet


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Désérialisation XML dans un DataSet

lundi 25 août 2008 à 15:18:45 | Désérialisation XML dans un DataSet

ChrisBzh56

Bonjour,

J'ai un souci dans mon projet, dans lequel, je construit un fichier XML, que je veux désérialisé et mettre dans un DataSet, mais cela ne marche pas et l'intitulé de mon erreur est "Il existe une erreur dans le document XML (1, 2)."

Voici le bout de code pour désérialisé mon fichier XML

            DataSet monDataset;
           
            XmlSerializer mySerializer = new XmlSerializer(typeof(DataSet));
          
            FileStream myFileStream = new FileStream("XMLFile1.xml", FileMode.Open);
           
            monDataset = (DataSet)mySerializer.Deserialize(myFileStream);

            GridView1.DataSource = monDataset;
            GridView1.DataBind();

Faut-il utiliset l'objet DataSet ou utilisé une classe ?!... Je suis perdue
Merci
lundi 25 août 2008 à 16:07:01 | Re : Désérialisation XML dans un DataSet

momo187

Réponse acceptée !

Bonjour,

Ce que tu veux faire, c'est récupérer des données dans un XML c'est bien ca? je ne connais pas le terme "désérialisé". Desolé.

Je l'ai déjà fait et j'ai effectivement utilisé un DataSet tout comme toi. Je n'ai pas eu besoin de classe. Ton XML est composé de manière correcte? C'est à dire avec des "tables"?

Pour lire j'utilise monDataSet.ReadXML
Ensuite tu peux compter les éléments dans ton DataSet :
Ex : int eleves = monDataSet.Tables[1].Rows.Count; 
1 étant le numéro de ma table, c'est pour cette raison que je te demande si ton XML est composé de manière correcte. Ensuite tu peut parcourir ton DataSet à l'aide d'une boucle "for" :
for (int j = 0; j < monDataSet.Tables[1].Rows.Count; j++)
Puis par exemple si je veux récupérer le numéro d'un élève (dans mon cas) :
monDataSet.Tables["ELEVE"].Rows[j]["NUMERO"].ToString()
Il faut définir la table et le champ que tu recherches dans ton fichier XML. Pui c'est à peu de chose prêt tout.
Voilà, je reste à dispo si tu as d'autres question, et désolé si ce n'était pas vraiment ta question mais c'est ce que j'ai compris.

lundi 25 août 2008 à 16:59:35 | Re : Désérialisation XML dans un DataSet

billou_13

Membre Club
Bonjour,

- Quel est le format de ton fichier XML ?

- Correspond-t-il au template XML de sérialisation d'un DataSet ?
Si non, je te conseille de récupère un exemple XML en sérialisant un objet DataSet pré-rempli. Ainsi, tu auras ton schéma XML qui fonctionne ^^

Bonne journée,

Billou_13
lundi 25 août 2008 à 17:04:46 | Re : Désérialisation XML dans un DataSet

billou_13

Membre Club
Une autre solution serait de créer une classe sérializable.
Ainsi, tu pourrais charger/sauvegarder un fichier XML moins compliqué (car je suppose que la classe DataSet doit générer un XML assez verbeux ^^; j'ai pas essayer).
Une fois ton objet récupéré, tu pourras récupérer le DataSet associé via une méthode statique.

Tu peux jeter un coup d'oeil au tutorial suivant:
http://www.csharpfr.com/tutoriaux/DATA-TRANSFER-OBJECT-PATTERN-DATA-ACCESS-WEB-SERVICE_772.aspx
La partie 3.1 devrait t'intéresser:
  - 3.2 Data Transfer Objects (DTO) correspond à ta classe sérializable
  - 3.3 La classe Assembler permet de récuperer le DataSet associé à ton DTO

Voila, bon courage ^^


Billou_13
lundi 25 août 2008 à 17:06:15 | Re : Désérialisation XML dans un DataSet

billou_13

Membre Club
Attention, je me suis trompé dans les numéro de partie:
3.2 -> 3.1.2
3.3 -> 3.1.3

Désolé,

Billou_13

PS: à quand l'édition de nos posts ? ^^
mardi 26 août 2008 à 09:40:28 | Re : Désérialisation XML dans un DataSet

ChrisBzh56

Mon fichier est un bien un fichier .xml

Voici un bout :

<listePersonnes>
  <personne>
    <nom>NOM1</nom>
    <prenom>Prenom1</prenom>
    <type>Admin</type>
    <couleur>red</couleur>
<listeDocuments>
            <document>
               <type>Attestation Sûreté</type>
               <couleur>#FFFFDC</couleur>
               <dateExpiration/>
               <dateAnticipation/>
               <dateControle/>
       </document>
           <document>
              <type>Autorisation provisoire de travail</type>
              <couleur>#FFFFDC</couleur>
              <dateExpiration/>
              <dateAnticipation/>
              <dateControle/>
       </document>
       ...
    </listeDocuments>
</personne>
<personne>
...
</personne>
     <listePersonnes>

Je vais etudié la solution de billou_13 et son tuto ainsi que les éléments de réponse de Momo187 (mais à l'inverse de ta réponse je veux transformé mon XML en DataSet)

Merci a vous deux, je vous tiens au courant

mardi 26 août 2008 à 10:06:37 | Re : Désérialisation XML dans un DataSet

ChrisBzh56

Voila, j'ai réussit, enfait merci momo187, c'était sa !

Voila le code :

            DataSet monDataset=new DataSet();
            Stream readDs = new FileStream("Gestion/XMLFile1.xml", FileMode.Open);
            monDataset.ReadXml(readDs);
            readDs.Close();


            GridView1.DataSource = monDataset;
            GridView1.DataBind();


Avec ce bout de code je récupère uniquement la 1ère branche de mon arbre XML, mais après je fais une boucle sur mon dataset pour afficher la "<liste document>"

            for (int j = 0; j < monDataset.Tables[1].Rows.Count; j++)
            {
                DropDownList1.Items.Add(monDataset.Tables["document"].Rows[j]["couleur"].ToString());
            }


Merci encore
           

mardi 26 août 2008 à 10:10:00 | Re : Désérialisation XML dans un DataSet

momo187

Il n'y a pas de quoi! Bonne journée et bonne prog


Cette discussion est classée dans : fichier, dataset, xml, désérialisation, mondataset


Répondre à ce message

Sujets en rapport avec ce message

Désérialisation xml dataset [ par hachiko49 ] Bonjour à tous,J'ai un dataset qui contient des datatables, images des tables de ma base de données.Certaines tables possèdent des champs dont la vale xml+datagrid +dataset [ par ginfo ] Salut  tout le monde ,puisque chui debutant j'ai un petit probleme  concernant l'affichage d'un fichier xml dans datagrid en passant par dataset , voi charger de l'xml dans une base de donnée ? [ par 6miK ] bonjour,j'arrive a enrregistrer ma base de donnée dans un fichier xml et j'arrive aussi a charger mon xml dans un datagrid.Mais, je n'arrive pas à met Writexml erreur [ par katwes ] Bonjour, J'essaie de créer un fichier xml à partir d'un dataset. Dataset.Writexml(@"C:\xml\fichier.xml"); Mais j'ai l'erreur suivante: System.Securit DataSet et Xml [ par c_ensias ] Bonjour,J'ai un fichier xml. Mon problème est le suivant :Je veux charger les données de ce fichier xml dans un Dataset en C# .Merci d'avance.Cordiale afficher à partir d'un DataSet [ par yassinchaouki ] Bonjour,J'ai fichier xml. Mon problème est le suivant :Je veux charger les données de ce fichier xml dans un DataSet, ensuite je veux parcourir les do Porbléme sur fichier xml en c# [ par chanandler ] Bonjour,J'arrive a ecire dans mon xml mais je voie pas comment limiter le nombre d'enregistrement dans le xml sachant que je voudrais que les scores s PB: Lecture fichier xml avec un dataset [ par Manu94600 ] Salut à tous, Je travail en ce moment sur un projet de création de fichiers pivots.Donc j'ai une série de fichiers xml avec leur xsd, qu'on reçoit.J Mettre en cache dans le DataSet le contenu d'un fichier xml [ par herve_labenere ] Je réalise actuellement un lecteur MP3. Je stocke au 1er lancement de l'application la liste des mp3 dans un fichier XML. J'utilise pour cela la class Sauvegarde d'une base de donnees entiere dans un XML en c# [ par soutimo ] Bonjour,Je code en c# sur Visual Studio et j 'ai vu par le forum que la sauvegarde d'un dataset dans un fichier XML est possible.Ce dataset correspond


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,562 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales