我正在使用 C#/.NET 反序列化一个类似于此的 XML 文件:
<?xml version="1.0" encoding="utf-8" ?>
<Books>
<Book
Title="Animal Farm"
PublishedDate="08/17/1945"
/>
... More Book nodes ...
</Books>
我的类,对于反序列化的 XML,如下所示:
[XmlRoot("Books")]
public class BookList
{
// Other code removed for compactness.
[XmlElement("Book")]
public List<Book> Books { get; set; }
}
public class Book
{
// Other code removed for compactness.
[XmlAttribute("Title")]
public string Title { get; set; }
[XmlAttribute("PublishedDate")]
public string PublishedDate { get; set; }
public string Month { get; set; }
public string Year { get; set; }
}
反序列化时,我想将 Book 的 PublishedDate 属性值存储在 Book 对象的 PublishedDate 属性中。但是,我还想解析 PublishedDate 并将其 Month 和 Year 分配给这些属性。
有没有办法在反序列化发生时解析 PublishedDate 属性并填充 Month 和 Year 属性(不使用支持字段)?例如,是否有接口提供对反序列化节点进行后处理的方法?每次反序列化已知对象时是否都会触发 XmlSerializer 事件?沿着这些路线还有其他东西吗?
请注意,我意识到没有支持字段的要求是任意的;我只是想知道是否还有其他选择。