Mam serię klas, które konwertuję do XML przy użyciu DataContractSerializer .NET w .NET 4.0. Serializacja działa dobrze i mogę parsować XML i odtworzyć obiekty .NET później bez żadnych trudności.Unikanie używania przestrzeni nazw "http://www.w3.org/2001/XMLSchema-instance" z .Net DataContractSerializer
Jednak większość danych DataMember nie jest wymagana. [DataMember (IsRequired = false)]. Działa to wspaniale w przypadku deklasyfikacji kodu XML, w którym można po prostu pominąć węzeł XML poza dokumentem, ale podczas serializacji istniejącego obiektu na XML, DataContractSerializer domaga się wypisywania właściwości, które mają wartości null jako węzły z atrybutem np.
[DataContract(Name = "response", Namespace = "http://domain.com/name")]
public class MyResponseClass
{
[DataMember(Name = "count", IsRequired = true, Order = 0)]
public int Count { get; set; }
[DataMember(Name = "info", IsRequired = false, Order = 1)]
public InfoClass Info { get; set; }
[DataMember(Name = "metadata", IsRequired = false, Order = 2)]
public MetadataList Metadatas { get; set; }
}
można odcinkach od
<response xmlns="http://domain.com/name">
<count>4</count>
</response>
Jednak gdybym serialise obiektu, tworzy:
<response xmlns="http://domain.com/name" xmlns:i="http://www.w3.org/2001/XmlSchema-instance">
<count>4</count>
<info i:nil="true" />
<metadata i:nil="true" />
</response>
Czy istnieje jakiś sposób, aby uzyskać DataContractSerializer nie napisać węzeł zamiast , kiedy ma wartość pustą?
Zostawiłeś swój przykład. –
Dobrze zauważył ... Coś poszło nie tak z cięciem i wklejaniem ... –