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 :

Désérialisation XML et balises vides


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 79
    Par défaut Désérialisation XML et balises vides
    Bonjour à tous.

    Je travaille actuellement sur un format de fichier dont la syntaxe est en XML. A partir du schéma XSD associé dont je dispose, j'ai créé les classes C# correspondantes via l'outil XSD.exe de .NET (xsd.exe /c /l:cs monschema.xsd).

    Lorsque j'essaie de désérialiser l'élément racine d'un fichier XML écrit selon ce schéma, j'obtiens des erreurs du type
    Il existe une erreur dans le document XML (148,23) ---> System.Format.Exception : Le format de la chaîne d'entrée est incorrect.
    Quand je regarde ligne 148, colonne 23 de mon fichier XML je me trouve juste après la balise fermante de l'élément . Après différents tests effectués en modifiant le fichier XML, il s'avère que tous les éléments "vides" devant contenir des entiers (et donc pour lesquels doit s'effectuer un cast string -> int) posent des problèmes lors de leur désérialisation. Cela ne change rien si j'essaie ou
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    <ABSFront></ABSFront>
    .

    Quelqu'un aurait-il une petite idée ?

    Merci d'avance

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    201
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 201
    Par défaut
    La seule qui me vient en tête, c'est qu'un Int n'est pas nullable. Et si une balise est vide, il considère la valeur comme nulle. Donc problème avec le cas d'un int.

    Soit, dans ta classe, la propriété de type int doit devenir nullable (>) ou alors, il faut forcer la valeur à 0 dans le XML que tu désérialize (0 étant le ).

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 79
    Par défaut
    J'ai remplacé les Int32 et les Decimal (pour lesquels j'ai le même problème)par des Nullable<Int32> et des Nullable<Decimal>, sans succès.

    Qu'entends-tu par "forcer la valeur à 0 dans le XML" ? (Parce que je n'ai pas accès du tout au code ayant servi à sérialiser les classes dans le fichier...)

  4. #4
    Membre émérite Avatar de kheironn
    Homme Profil pro
    Chef de projets technique C# / MVC / .Net
    Inscrit en
    Février 2007
    Messages
    822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets technique C# / MVC / .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2007
    Messages : 822
    Par défaut
    ton xsd, tu l'as créé à partir d'un xml ? Dans ce cas, ton xml n'étais pas exaustif. Donc le schéma n'a pas connaissance de type nullables. A toi de l'en informer.

    ah, je viens de relire ton dernier poste.
    Donc, si tu n'as pas la main sur le XSD, ni les classes, il faut que tes fichier XML aient des valeurs pour les éléments numériques :
    <MonChiffre /> ne doit pas se trouver dans ton ficheir XML, à la place tu dois mettre des <MonChiffre>0</MonChiffre> (ou une valeur appropriée, selon ton fonctionnel).

  5. #5
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 79
    Par défaut
    Le problème c'est que je ne contrôle pas la façon dont sont créés les fichiers XML... J'ai juste le schéma XSD et des fichiers XML générés par un logiciel, et je dois désérialiser l'objet racine des fichiers pour aller lire les informations dedans ...

  6. #6
    Membre émérite Avatar de kheironn
    Homme Profil pro
    Chef de projets technique C# / MVC / .Net
    Inscrit en
    Février 2007
    Messages
    822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets technique C# / MVC / .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2007
    Messages : 822
    Par défaut
    Que je comprenne bien :
    on te fourni des fichiers XML, tu as un schema pour la validation et tu dois déserialiser ?
    Tu as utilisé l'outil de génération de classes à partir du xsd, c'est bien ça ?

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

Discussions similaires

  1. TO XML (Balise vide)
    Par ricil78 dans le forum Linq
    Réponses: 2
    Dernier message: 28/11/2008, 15h28
  2. balise vide avec dom xml
    Par newcodeur dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 04/08/2008, 16h59
  3. [XML] Ne pas afficher les balises vides
    Par ludo.guy dans le forum Reports
    Réponses: 0
    Dernier message: 03/10/2007, 12h01
  4. [XML] export, afficher balises vides
    Par peter2587 dans le forum VBA Access
    Réponses: 6
    Dernier message: 04/06/2007, 18h00
  5. [XML] ChildNodes: différencier si balise vide ou inexistante
    Par MiJack dans le forum Composants VCL
    Réponses: 4
    Dernier message: 05/04/2006, 14h25

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