2009-11-17 4 views
0

L'erreur est lorsque la classe est sérialisée, je ne reçois pas une erreur d'exécution ou quoi que ce soit (sauf si je tente de désérialiser). Lorsque XmlSerializer sérialise ma classe, il ajoute parfois du texte à la fin du XML. Cela arrive souvent à la fin:.net erreur xmlserializer

</RootNode>ootNode> 

Quelques fois ce n'est pas à la fin, mais au milieu, quelque chose comme

<Node Name="MyNode"> 
    Name="MyNode"> 
    <Attribute1>Attr</Attribute1> 

Je ne sais pas ce qui pourrait être la cause, mais peut-être il a est arrivé à certains d'entre vous aussi. Faites-moi savoir si vous avez trouvé une solution à ce problème.

Voici mon code:

 using (StreamWriter writer = new StreamWriter(
      File.Open(fileName, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite))) 
     { 
      XmlSerializer serializer = new XmlSerializer(typeof(MyClass)); 

      serializer.Serialize(writer, this); 
     } 

Merci!

+0

Peut-être que vous pourriez publier votre code? Ce n'est probablement pas le XmlSerializer, mais peut-être que si vous lisez ou écrivez dans un fichier, vous y récupérez des données périmées. C'est difficile à dire sans voir du code. – alexdej

+0

Je me souviens d'avoir vu cela avant, mais ne peut vraiment pas me souvenir où ou ce que j'ai fait pour contourner le problème ... Désolé :( – leppie

+0

Je vais poster mon code, mais c'est très simple.Une seconde – Carlo

Répondre

4

Vous utilisez le mauvais FileMode. OpenOrCreate ne tronque pas le contenu du fichier s'il existe déjà, ce qui entraîne la superposition de vos nouvelles données sur les anciennes données. FileMode.Create fera ce que vous voulez.

+0

Merci, a travaillé comme un charme! – Carlo

Questions connexes