簡體   English   中英

使用XmlSerializer C#根據條件序列化項目

[英]Serialize item in base of condition using XmlSerializer c#

我有一個對象,它的參數之一是對象列表。

例如,帶有檢查清單的Student對象:

[Serializable]
public class Student
{
    [XmlAttribute("Name")]
    public string Name {get; set;}

    [XmlArray("Exams")]
    public List<Exam> Exams {get; set;}
}

[Serializable]
public class Exam
{
    [XmlAttribute("Course")]
    public string Course;

    [XmlAttribute("Score")]
    public int Score;
}

我的目標是序列化Student模型,並僅將滿足某些條件的考試納入XML中,例如,我只希望分數(<5)低的考試。

可以使用System.Xml.Serialization命名空間中存在的XmlSerializer來完成這種操作嗎?

您可以使用LINQ查詢簡單地創建一個具有令人滿意的考試成績的學生,然后序列化結果

var studentToSerialize = new Student { 
           Name = student.Name,
           Exams = student.Exams.where(e => e.Score < 5)
    }
// Your serialization logic here

我不知道有提供“每個集合元素”條件序列化的序列化器; 有些執行“每個屬性”的條件序列化,但是...並非如此。 最簡單的事情是僅使用您要序列化的項目創建學生的副本 更復雜的方法是編寫某種自定義的IList<Exam>填充程序,它包裝相同的List<Exam>實例並應用過濾,但是...這很丑陋,我強烈建議您不要嘗試這樣做(問題,例如:如果在包裝類型上調用Add ,並且所添加的元素得分較高,會發生什么?)。

因此,我的建議是序列化之前進行過濾-通過刪除不需要的項或通過僅創建所需項的克隆來進行。

暫無
暫無

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

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