Tôi có một loạt các lớp mà tôi đang chuyển đổi sang XML bằng cách sử dụng .NET DataContractSerializer trong .NET 4.0. Việc tuần tự hóa hoạt động tốt và tôi có thể phân tích cú pháp XML và tạo lại các đối tượng .NET sau này mà không gặp bất kỳ khó khăn nào.Tránh sử dụng không gian tên “http://www.w3.org/2001/XMLSchema-instance” với .Net DataContractSerializer
Tuy nhiên, hầu hết các DataMember đều không bắt buộc. [DataMember (IsRequired = false)]. Điều này làm việc tuyệt vời khi hủy xê-ri XML, nơi bạn có thể bỏ qua nút XML trong tài liệu, nhưng khi tuần tự hóa một đối tượng hiện có thành XML, DataContractSerializer nhấn mạnh vào việc ghi ra các thuộc tính có giá trị null như các nút có thuộc tính, ví dụ:
[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; }
}
thể được tuần tự từ
<response xmlns="http://domain.com/name">
<count>4</count>
</response>
Tuy nhiên, nếu tôi serialise đối tượng, nó tạo ra:
<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>
Có cách nào để có được những DataContractSerializer để không viết nút thay vì , khi nó có giá trị null?
Bạn bỏ qua ví dụ của bạn. –
Cũng phát hiện ... Đã xảy ra sự cố với việc cắt và dán ... –