La Sérialisation personnalisée à l'aide de XmlSerializer

J'ai une classe que j'ai besoin de faire quelques personnalisé de sortie XML à partir, donc j'implémente l'interface IXmlSerializable. Cependant, certains champs je veux de sortie avec la sérialisation par défaut sauf je veux changer les noms de balise xml. Lorsque j'appelle le sérialiseur.Sérialiser, je reçois par défaut des noms de balise dans le fichier XML. Puis-je modifier ces quelque sorte?

Voici mon code:

public class myClass: IXmlSerializable
{
    //Some fields here that I do the custom serializing on
    ...

    //These fields I want the default serialization on except for tag names
    public string[] BatchId { get; set; }
    ...

    ... ReadXml and GetSchema methods are here ...

    public void WriteXml(XmlWriter writer)
    {                        
        XmlSerializer serializer = new XmlSerializer(typeof(string[]));
        serializer.Serialize(writer, BatchId);
        ... same for the other fields ...

        //This method does my custom xml stuff
        writeCustomXml(writer);   
    }

    //My custom xml method is here and works fine
    ...
}

Voici mon Xml de sortie:

  <MyClass>
    <ArrayOfString>
      <string>2643-15-17</string>
      <string>2642-15-17</string>
      ...
    </ArrayOfString>
    ... My custom Xml that is correct ..
  </MyClass>

Ce que je veux à la fin, c'est:

  <MyClass>
    <BatchId>
      <id>2643-15-17</id>
      <id>2642-15-17</id>
      ...
    </BatchId>
    ... My custom Xml that is correct ..
  </MyClass>
Combien de fois êtes-vous de la sérialisation / désérialisation ? 100s de fois pendant le cycle de vie des applications, ou seulement sur démarrage / arrêt. Si l'ancien, j'ai une application qui est nettement plus souple.
Vraiment que de la sérialisation d'une fois. Cette application est un simple outil qui extrait des données à partir d'une propriété format de base de données et les enregistre au format xml. Donc, je suis en tirant des données dans un modèle objet, puis immédiatement à la sérialisation. La plupart des données était simple, alors je n'ai pas besoin de mettre en œuvre IXmlSerializable...mais ce morceau particulier de données a été un peu de douleur.
Eh bien jetez un oeil ici, le code est MIT code.google.com/p/videobrowser/source/browse/MediaBrowser/... il y a un test unitaire ainsi, vous pourriez avoir à le prolonger un peu, mais toute l'architecture est là. plus pour votre scénario, il fonctionnera BEAUCOUP mieux que XmlSerializer

OriginalL'auteur KrisTrip | 2009-12-30