簡體   English   中英

Xml序列化 - 渲染空元素

[英]Xml Serialization - Render Empty Element

我正在使用XmlSerializer並在類中具有以下屬性

public string Data { get; set; }

我需要輸出完全如此

<Data />

我將如何實現這一目標?

我最近這樣做,有另一種方法,這似乎有點簡單。 您只需要將屬性的值初始化為空字符串,然后它將根據您的需要創建一個空標記;

Data = string.Empty;

解決方案是創建一個PropertyNameSpecified屬性,序列化程序使用該屬性來確定是否序列化該屬性。 例如:

public string Data { get; set; }

[XmlIgnore]
public bool DataSpecified 
{ 
   get { return !String.IsNullOrEmpty(Data); }
   set { return; } //The serializer requires a setter
}

嘗試使用public bool ShouldSerialize_PropertyName _(){}並在其中設置默認值。

public bool ShouldSerializeData()
{
   Data = Data ?? "";
   return true;
}

可以在MSDN上找到此工作原理的說明。

您可以嘗試將[XmlElement(IsNullable=true)]等XMLElementAttribute添加到該成員。 這將強制XML Serializer添加元素,即使它是null。

您可以嘗試將[XmlElement(IsNullable = true)]等XMLElementAttribute添加到該成員中,並在get / set屬性中設置如下:

[XmlElement(IsNullable = true)] 
public string Data 
{ 
    get { return string.IsNullOrEmpty(this.data) ? string.Empty : this.data; } 
    set 
    { 
        if (this.data != value) 
        { 
            this.data = value; 
        } 
    } 
} 
private string data;

所以你不會有:

<Data xsi:nil="true" />

你將在渲染上有這個:

<Data />

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM