簡體   English   中英

XMLSerializer並使用屬性創建XML數組

[英]XMLSerializer and creating an XML Array with an attribute

我正在嘗試創建一個可以通過XMLSerializer序列化為XML的類。

目標XML應該看起來像這樣

<subject_datas type="array">
    <subject_data>
           ...
    </subject_data>
    <subject_data>
           ...
    </subject_data>
</subject_datas>

問題是subject_datas標記的type屬性。 我試圖將其設計為派生列表,並使用XMLAttribute屬性附加屬性,如下所示

[XmlRoot(ElementName = "subject_datas")]
public class SubjectDatas : List<SubjectData>
{
    public SubjectDatas (IEnumerable<SubjectData> source)
    {
        this.AddRange(source);
        Type = "array";
    }

    [XmlAttribute(AttributeName = "type")]
    public string Type { get; set; }
}

但是因為該類是一個Collection,所以XMLSerializer只會序列化Collection中的對象,而不是Collection本身。 所以我的Type屬性被忽略了:(

您可以在繼承中使用合成

    [XmlRoot(ElementName = "subject_datas")]
    public class SubjectDatas
    {
        [XmlElement(ElementName = "subject_data")]
        public List<SubjectData> SubjectDatas2 { get; set; }

        public SubjectDatas(IEnumerable<SubjectData> source)
        {
            SubjectDatas2= new List<SubjectData>();
            this.SubjectDatas2.AddRange(source);
            Type = "array";
        }

        private SubjectDatas()
        {
            Type = "array";
        } 

        [XmlAttribute(AttributeName = "type")]
        public string Type { get; set; }
    }

暫無
暫無

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

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