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

Linq Discussion :

Renvoie un objet désérializé sur base d'un xsd


Sujet :

Linq

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    661
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2006
    Messages : 661
    Par défaut Renvoie un objet désérializé sur base d'un xsd
    Bonjour,

    Je ne sais pas si je suis dans la bonne partie du forum pour mon problème mais voilà:

    Sur base d'un xml je crée un xsd via les tools de visual studio.

    Je transforme ensuite le xsd en .cs que je lie à mon projet.

    Mon programme lit des xml que je sérialise:

    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
     
     private static object GetXML(string Path)
            {
                try
                {
     
                    XmlSerializer deserialize = new XmlSerializer(typeof(Message));
     
                    using (Stream stream = new FileStream(Path, FileMode.Open, FileAccess.Read, FileShare.None))
                    {
     
                        return deserialize.Deserialize(stream);
     
                    }
     
                }
                catch (Exception ex)
                {
     
                    Util.GoLog("Problème dans la désérialization du fichier" + Path + "\n" + ex.ToString());
                    return null;
                }
     
            }
    Mon problème est que parfois je reçois un xml dont la structure est un peu différente de mon xsd ==> .cs

    Et j'obtiens l'erreur:
    [System.Xml.XmlException] = {"Types de noeud inattendu Element. La méthode ReadElementString ne peut être appelée que pour des éléments au contenu simple ou vide. Ligne 43, position 7."}


    Pcq à la place d'avoir
    <Telephones>
    </Telephones>

    J'ai
    <Telephone>
    <Tel>065651541</Tel>
    <Type>Maison</Type>
    </Telephone>

    Et donc ma serialization ne fonctionne pas.

    Ma question est comment forcer pour que ma serialization fonctionne sans régénérer un xsd ==> .cs à chaque nouvelle balise dans le xml

    D'avance merci

  2. #2
    Expert confirmé

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Charente Maritime (Poitou Charente)

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

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 761
    Billets dans le blog
    21
    Par défaut
    Bonjour,

    Peux-tu nous donner le XML Schéma correspondant ? Tes éléments Tel et Type ont ils l'attribut minOccurs="0" ?

Discussions similaires

  1. Mapper des objets métier sur une base existante (mais pas un simple mapping)
    Par NaBuCO dans le forum Persistance des données
    Réponses: 2
    Dernier message: 13/04/2012, 15h24
  2. Récuperer les droits sur objets de la base dorsal
    Par acama dans le forum Sécurité
    Réponses: 1
    Dernier message: 17/02/2011, 14h18
  3. Verifier droit utilisateur sur un objet de la base
    Par acama dans le forum Sécurité
    Réponses: 2
    Dernier message: 06/02/2011, 18h32
  4. [XSD] [XML Schemas] Valider un Objet sur base du schéma
    Par Invité dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 27/03/2009, 14h10
  5. [11.5.0] Objet date sur alpha dans ma base
    Par nabie dans le forum Designer
    Réponses: 2
    Dernier message: 14/10/2008, 09h00

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