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 :

XmlSerializer en framework 1.1


Sujet :

C#

  1. #1
    Membre habitué
    Avatar de Spidermeu
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2006
    Messages : 147
    Points : 151
    Points
    151
    Par défaut XmlSerializer en framework 1.1
    bonjour,
    je travail sous visual studio 2003 pour qu'une appli soit compatible avec un vieille appareil.

    j'ai pratiquement fini. Il ne me reste plus qu'a créer un fichier xml à partir d'une Arraylist...

    le problème c'est que le XmlSerializer ne semble pas exister dans mon environnement -_-'. Pourtant :

    http://msdn.microsoft.com/en-us/libr...er(vs.71).aspx

    j'ai bien mis les :
    using System.xml.Serialization;
    using System.Xml.;


    et le message d'erreur "are you missing a using directive or an assembly reference?) ...

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 97
    Points : 115
    Points
    115
    Par défaut
    Et en mettant le chemin complet vers la classe ? (System.Xml.Serialization.XmlSerializer)

  3. #3
    Membre habitué
    Avatar de Spidermeu
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2006
    Messages : 147
    Points : 151
    Points
    151
    Par défaut
    Il ne reconnait que System.Xml.Serialization.XmlSerializerNamespaces (avec l'auto-complétion).

    j'ai oublié de préciser que je suis en compact 1.1.

  4. #4
    Membre habitué
    Avatar de Spidermeu
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2006
    Messages : 147
    Points : 151
    Points
    151
    Par défaut
    Pensez vous qu'il existe une solution alternative à System.Xml.Serialization.XmlSerializer ?

    Ou puis-je importer un élément dans mon projet qui pourrait l'ajouter ???

    merci d'avance

  5. #5
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 277
    Points : 1 521
    Points
    1 521
    Par défaut
    En bas de la doc : Assembly: System.Xml (in System.Xml.dll)

    Essaye donc de rajouter cette référence dans ton projet.

  6. #6
    Membre habitué
    Avatar de Spidermeu
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2006
    Messages : 147
    Points : 151
    Points
    151
    Par défaut
    bonjour,
    merci pour cette réponse mais j'avais déjà ajouter la référence System.Xml...

    en revanche la dll est en version 1.0.5.0000.0.... j'essais de la trouver en 1.1.xxx

  7. #7
    Membre habitué
    Avatar de Spidermeu
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2006
    Messages : 147
    Points : 151
    Points
    151
    Par défaut
    Bon,
    j'ai trouvé la DLL en version 1.1.4322.573.

    j'ai supprimé le system.Xml en version 1.0.5 du projet. j'ai ensuite rajouter la dll 1.1.4...

    lorsque je tente d'écrire mon fichier Xml il me met une erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    System.InvalidOperationException: There was an error generating the XML document. ---> System.InvalidOperationException: The type SmartCode.Article was not expected. Use the XmlInclude or SoapInclude attribute to specify types that are not known statically.
       at System.Xml.Serialization.XmlSerializationWriter.WriteTypedPrimitive(String name, String ns, Object o, Boolean xsiType)
       at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write1_Object(String n, String ns, Object o, Boolean isNullable, Boolean needType)
       at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write2_ArrayOfAnyType(Object o)
       --- End of inner exception stack trace ---

  8. #8
    Rédacteur/Modérateur
    Avatar de Skalp
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 694
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 694
    Points : 2 927
    Points
    2 927
    Par défaut
    Citation Envoyé par Spidermeu Voir le message
    System.InvalidOperationException: There was an error generating the XML document. ---> System.InvalidOperationException: The type SmartCode.Article was not expected. Use the XmlInclude or SoapInclude attribute to specify types that are not known statically.
    at System.Xml.Serialization.XmlSerializationWriter.WriteTypedPrimitive(String name, String ns, Object o, Boolean xsiType)
    at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write1_Object(String n, String ns, Object o, Boolean isNullable, Boolean needType)
    at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write2_ArrayOfAnyType(Object o)
    --- End of inner exception stack trace ---
    Il semblerait que la sérialisation pose problème au niveau d'objets héritant d'une classe mère.

    Les types SmartCode ou Article dérivent-t-ils d'une autre classe ?

    Dans ce cas, il te faut utiliser l'attribut [XmlInclude] pour faire connaître tes classes dérivées au niveau de ta classe mère.
    Plus d'explications dans ce post : [Serializalisation] Comment résoudre mon souci d'Héritage ?

  9. #9
    Membre habitué
    Avatar de Spidermeu
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2006
    Messages : 147
    Points : 151
    Points
    151
    Par défaut
    SmartCode représente le nom du projet (namespace), Article représente une classe d'objet a serializer (donc, mon ArrayList comprend n articles). Je serialize mon arraylist.
    Pour info, la classe article ne derivé de rien du tout.
    Enfin, je n'ai malheureusement pas le code sous la main, je ne peux donc pas tester ce soir. Je te tiens au courant dès demain.

    Merci

  10. #10
    Membre habitué
    Avatar de Spidermeu
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2006
    Messages : 147
    Points : 151
    Points
    151
    Par défaut
    Pour information, la sérialisation fonctionne avec le code que j'ai saisis en 2.0...

  11. #11
    Membre habitué
    Avatar de Spidermeu
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2006
    Messages : 147
    Points : 151
    Points
    151
    Par défaut
    je me permet un petit UP car je rencontre toujours le même problème.
    Je ne peux pas ajouter la "balise" XMLinclude, car aucune classe n'est dérivée.

  12. #12
    Rédacteur/Modérateur
    Avatar de Skalp
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 694
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 694
    Points : 2 927
    Points
    2 927
    Par défaut
    Peut-on voir le code de la classe Article, de la classe qui contient l'ArrayList d'Article et la façon dont tu la sérialises ?

  13. #13
    Membre habitué
    Avatar de Spidermeu
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2006
    Messages : 147
    Points : 151
    Points
    151
    Par défaut
    bien sur. le voici :

    Classe Article

    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
    using System;
    using System.Collections;
    using System.Text;
    using System.Xml.Serialization;
    using System.IO;
     
    namespace SmartCode
    {
    	[XmlRoot(ElementName = "Article")]
    	public class Article
    	{
    		private string codeBarre;
    		private string quantite;
    		private int palette;
    		private int numero_article;
     
    		[XmlElement(ElementName = "CodeBarre")]
    		public string getCode
    		{
    			get { return codeBarre; }
    			set { codeBarre = value; }
    		}
     
    		[XmlElement(ElementName = "Quantite")]
    		public string getQuantite 
    		{
    			get { return quantite;}
    			set { quantite = value;}
    		}
     
    		[XmlElement(ElementName = "Palette")]
    		public int getPalette 
    		{
    			get { return palette; }
    			set { palette = value;}
    		}
     
    		[XmlElement(ElementName = "NumeroArticle")]
    		public int getNumero 
    		{
    			get { return numero_article;}
    			set { numero_article = value;}
    		}
     
     
    		public Article() { }
     
    		public Article(string _codeBarre, string _quantite, int _palette, int _numero_article)
    		{
    			this.codeBarre = _codeBarre;
    			this.quantite = _quantite;
    			this.palette = _palette;
    			this.numero_article =_numero_article;
    		}
    	}
    }

    Classe WriteXmlFile


    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
    using System;
    using System.Collections;
    using System.Text;
    using System.Xml.Serialization;
    using System.Xml;
    using System.IO;
     
    namespace SmartCode
    {
        class WriteXmlFile
        {
            private StreamWriter writer;
            private string dts="";
     
            public void Open()
            {
    			//génération du nom du fichier xml en fonction de la date et de l'heure
    			dts += DateTime.Now.Date.ToLongDateString() + ",à " + DateTime.Now.Hour.ToString()+ "H" +DateTime.Now.Minute.ToString();
    			//puis on le génère
                writer = File.CreateText(@".\" + dts + ".xml");
            }
     
            public void Make(ArrayList list)
            {
     
                XmlSerializer x = new XmlSerializer(typeof(ArrayList));
                x.Serialize(writer, list);
            }
     
            public void Close()
            {
                writer.Close();
            }
            public void Copy()
            {
                File.Copy(@".\" + dts + ".xml", @"\\XXXX\partage\" + dts + "1.xml");
            }
        }
    }
    Enfin pour l'arraylist (classe de type form), je la déclare comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private ArrayList list = new ArrayList;
    et j'ajoute des articles comme suit :
    A noter qu'en version 2.0, la serialisation fonctionnait...

    voir un topic précédent : serialisation d'une liste d'objets

  14. #14
    Rédacteur/Modérateur
    Avatar de Skalp
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 694
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 694
    Points : 2 927
    Points
    2 927
    Par défaut
    Essaye de rajouter l'attribut [Serializable] au-dessus de la déclaration de la classe Article...
    (Peut-être que le framework 1 nécessite plus d'informations pour que la sérialisation fonctionne correctement ? )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    [Serializable]
    [XmlRoot(ElementName = "Article")]
    public class Article
    {
    	...
    }

  15. #15
    Membre habitué
    Avatar de Spidermeu
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2006
    Messages : 147
    Points : 151
    Points
    151
    Par défaut
    Merci pour le temps que tu me consacres.

    concernant [Serializable], il n'est pas reconnu (not found)...

  16. #16
    Rédacteur/Modérateur
    Avatar de Skalp
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 694
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 694
    Points : 2 927
    Points
    2 927
    Par défaut
    Dans ton projet, quelle est la version de la librairie System.dll ?
    ...Il semblerait que ton projet entier soit en version 1.0 et non 1.1.

  17. #17
    Membre habitué
    Avatar de Spidermeu
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2006
    Messages : 147
    Points : 151
    Points
    151
    Par défaut
    effectivement, il semblerait que toutes les dlls soit en 1.0.5000.0 -_-'.

    Mais je ne sais pas comment passer en 1.1

  18. #18
    Rédacteur/Modérateur
    Avatar de Skalp
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 694
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 694
    Points : 2 927
    Points
    2 927
    Par défaut
    Essaye de générer un nouveau projet dans Visual Studio et regarde la version de System.dll.
    Si elle est en version 1.1, déplace tes sources dans ce nouveau projet et ajoute les références nécessaires (System.xml.dll, par exemple).

    Tu nous as dit aussi que tu travaillais avec le comptact framework 1.1, mais je ne le retrouve pas dans les téléchargements disponibles, sur MS.com : du 1.0, on passe tout de suite au 2.0. Ceci dit, je n'ai jamais travaillé avec le compact framework, donc je ne connais pas les version disponibles.
    - Qui gère les versions du framework chez toi ? S'il y a un responsable, parle-lui en.
    - Qu'as-tu dans le dossier : C:\WINDOWS\Microsoft.NET\Framework ?

  19. #19
    Membre habitué
    Avatar de Spidermeu
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2006
    Messages : 147
    Points : 151
    Points
    151
    Par défaut
    désolé, je suis pas du tout codeur (je fais ça pour dépanner).
    Pour ce qui est d'installer des frameworks, je suis maître de ma machine, cela ne pose donc aucun soucis...
    Je ne maitrise pas très bien visual studio (encore moins la version 2003).
    Dans le dossier C:\WINDOWS\Microsoft.NET\Framework, je dispose des versions :
    - v1.0.3705
    - v1.1.4322
    - v2.0.50727
    - v3.0

    (ps : vs2005 était déjà présent sur cette machine avant l'installation de vs 2003).

  20. #20
    Rédacteur/Modérateur
    Avatar de Skalp
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 694
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 694
    Points : 2 927
    Points
    2 927
    Par défaut
    Citation Envoyé par Skalp Voir le message
    Essaye de générer un nouveau projet dans Visual Studio et regarde la version de System.dll.
    Si elle est en version 1.1, déplace tes sources dans ce nouveau projet et ajoute les références nécessaires (System.xml.dll, par exemple).
    As-tu essayé de créer un nouveau projet ?

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [MVC] Différences entre les framework MVC push et pull ?
    Par XavierZERO dans le forum Frameworks Web
    Réponses: 5
    Dernier message: 15/01/2004, 13h12
  2. Recherche un framework RAD pour Eclipse
    Par Almex dans le forum Eclipse Java
    Réponses: 10
    Dernier message: 08/10/2003, 12h24
  3. [Persistence][Framework]Avis.
    Par quilo dans le forum Persistance des données
    Réponses: 5
    Dernier message: 10/09/2003, 14h55
  4. Modifications framework
    Par rgarnier dans le forum XMLRAD
    Réponses: 5
    Dernier message: 18/06/2003, 18h08

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