Ich verwende den neuen .NET 3.0 DataContractSerializer. Ich habe beide Nullable < > und Liste <> Objekte, die ich serialisieren werde. Beispiel:Kann ich den DataContractSerializer so konfigurieren, dass optionale XML-Elemente (d. H. Nullable <> und List <>) nicht erstellt werden?
[DataContract(Namespace = "")]
class Test
{
public static void Go()
{
Test test = new Test();
var dcs = new DataContractSerializer(typeof(Test));
dcs.WriteObject(new StreamWriter("test.xml").BaseStream, test);
}
[DataMember]
public Nullable<int> NullableNumber = null;
[DataMember]
public int Number = 5;
[DataMember]
public List<int> Numbers = new List<int>();
}
Wenn .NET eine Null oder eine leere Liste serialisiert, bringt es auf null (für Nullable) und leer (für Listen) Elemente in die XML. Das oben gezeigte Beispiel erzeugt:
<Test xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<NullableNumber i:nil="true"/>
<Number>5</Number>
<Numbers xmlns:a="http://schemas.microsoft.com/2003/10/Serialization/Arrays"/>
</Test>
Gründen ich keine Zeit haben, zu beschreiben, ich die überflüssigen NullableNumber und Zahlen Elemente eliminieren möchte, etwa so:
<Test xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<Number>5</Number>
</Test>
der Tat die oben genannten Datei deserialisiert mit dem Serializer geht es gut.
Danke für Ihre Hilfe!