Benutzerdefinierte Serialisierung mit XmlSerializer

Habe ich eine Klasse, die ich tun müssen, um einige benutzerdefinierte XML-Ausgabe aus, so dass ich implementieren, die die IXmlSerializable-Schnittstelle. Jedoch, einige der Felder, auf die ich ausgeben will mit der Standard-Serialisierung, außer, dass ich ändern wollen, die xml-tag-Namen. Wenn ich Anrufe, serializer.Serialisieren, bekomme ich die Standard-tag-Namen in XML. Kann ich diese irgendwie?

Hier ist mein 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
    ...
}

Hier ist mein Xml-Ausgabe:

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

Was ich will, am Ende ist:

  <MyClass>
    <BatchId>
      <id>2643-15-17</id>
      <id>2642-15-17</id>
      ...
    </BatchId>
    ... My custom Xml that is correct ..
  </MyClass>
Wie oft sind Sie serialisieren / Deserialisieren ? 100s von Zeiten während des app-Lebenszyklus oder nur auf Start / Herunterfahren. Falls ersteres habe ich eine Implementierung, die ist wesentlich flexibler.
Wirklich nur zu serialisieren einmal. Diese Anwendung ist ein einfaches Werkzeug, das zieht Daten aus einer proprietären Datenbank-format und speichert in xml. So bin ich ziehen von Daten in ein Objekt-Modell und dann sofort zu serialisieren. Die meisten der Daten war einfach, so dass ich nicht brauchen, IXmlSerializable zu implementieren...aber dieses Besondere Stück von Daten war ein bisschen wie ein Schmerz.
Nun, dann schau mal hier, der code ist MIT code.google.com/p/videobrowser/source/browse/MediaBrowser/... es ist ein unit-test-wie gut, können Sie haben, um es zu erweitern ein wenig, aber die ganze Architektur ist es. plus für Ihr Szenario es führt VIEL besser als XmlSerializer

InformationsquelleAutor KrisTrip | 2009-12-30

Schreibe einen Kommentar