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 :

Erreur serialisation XML


Sujet :

C#

  1. #1
    Candidat au Club
    Inscrit en
    Juin 2011
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Juin 2011
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Erreur serialisation XML
    Bonjour à tous !

    Je vous remercie par avance si vous pouvez m'apporter une aide à mon petit problème dans la sérialisation en C#

    Alors en gros, j'utilise la deserialisation pour lire un fichier XML qui me créé des objets, objets que je manipule pour enfin créer un nouveau XML en utilisant la sérialisation.

    Je vais donc commencer par afficher l'erreur que j'obtiens puis ensuite je mettrai ce que je pense être mon problème.

    L'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Exception non gérée*: System.InvalidOperationException: Il existe une erreur dans le document XML (2, 2). ---> System.InvalidOperationException: Request xmlns='http://schemas.mondomaine.com/orderpref'> n'était pas attendu.
       à Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderRequest
    .Read11_Request()
    En gros, je suis capable de générer un fichier XML a partir de mes classes, mais lorsque ça me les génère, la balise root contient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <Request xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    Alors que les fichiers XML que j'essaye de lire contiennent :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <Request xmlns="http://schemas.mondomaine.com/orderdef">
    Quand je remplace cette balise, je n'ai aucun soucis pour lire l'XML et récupérer le bon objet par la suite.

    J'ai un peu chercher sur internet, mais je n'ai pas trouvé de solution pour ne plus avoir cette erreur.

    Auriez-vous une petite idée pour lui dire de changer sa reference pour mon fichier xsd ?

    Merci à vous !

    PS : je ne peux pas modifier mes XML

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2008
    Messages
    381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2008
    Messages : 381
    Points : 766
    Points
    766
    Par défaut
    Je ne sais pas comment dire au serializer comment changer sa référence.

    Tu ne peux pas modifier le "fichier" xml, mais tu peux modifier le contenu du fichier en mémoire et ensuite le désérialiser?
    Les fautes d'orthographes sus-citées sont déposées auprès de leurs propriétaires respectifs. Aucune responsabilité n'est engagée sur la lisibilité du message ou les éventuels dommages qu'il peut engendrer.

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Ajoute l'attribut XmlRoot sur ta classe pour préciser le namespace XML :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    [XmlRoot(Namespace = "http://schemas.mondomaine.com/orderdef")]
    public class Request
    {
        ...
    }
    Si tu préfères éviter de modifier ta classe, tu peux aussi configurer ça au niveau du sérialiseur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var rootAttribute = new XmlRootAttribute() { Namespace = "http://schemas.mondomaine.com/orderdef" };
    var serialiser = new XmlSerializer(typeof(Request), rootAttribute);

  4. #4
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Bonjour

    Précise le XMLNS dans l'attribut XmlRoot de la classe vers laquelle tu déserialises.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [XmlRoot(ElementName = "MyRootElement", Namespace = "MyNamespace")]

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  5. #5
    Candidat au Club
    Inscrit en
    Juin 2011
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Juin 2011
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par tomlev Voir le message
    Ajoute l'attribut XmlRoot sur ta classe pour préciser le namespace XML :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    [XmlRoot(Namespace = "http://schemas.mondomaine.com/orderdef")]
    public class Request
    {
        ...
    }
    C'est parfait, c'est exactement ce que je recherchais ça fonctionne maintenant

    Merci beaucoup !

Discussions similaires

  1. Serialisation XML erreur Reflexion
    Par Lelio1407 dans le forum C#
    Réponses: 13
    Dernier message: 29/11/2012, 16h35
  2. erreur avec XML::Simple
    Par Melvine dans le forum Modules
    Réponses: 26
    Dernier message: 13/10/2006, 11h52
  3. Numero erreur chargement XML
    Par julio84 dans le forum ASP
    Réponses: 2
    Dernier message: 22/06/2006, 16h16
  4. [DOM] [Package] serialisation XML
    Par Overflow64 dans le forum Format d'échange (XML, JSON...)
    Réponses: 10
    Dernier message: 19/10/2004, 16h43
  5. [Concept][Sérialisation] XML ou serializable
    Par christopheJ dans le forum Format d'échange (XML, JSON...)
    Réponses: 7
    Dernier message: 03/06/2004, 13h11

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