我正在使用.NET XmlSerializer
類將一個XML字符串寫入StringWriter(而不是WCF或JSON或其他任何涉及服務的東西)。XmlSerializer可以支持循環引用嗎?
經過幾小時的試圖找出爲什麼我在撥打XmlSerializer.Serialize()
後得到了There was an error generating the XML document
的例外,我終於發現它涉及到循環引用。我的課是這樣的:
class Table
{
public List<Columns> Columns {get; set;}
}
class Column
{
public Table Table {get; set;}
}
正如你可以看到,表中的列的集合,但集合中的每一列還持有它的父表的引用。
我不要想要在序列化期間忽略該屬性。我想能夠反序列化它,而不必重建引用。當我使用WCF時,有一種方法可以在線路中保留引用以減小XML的大小。當然,.NET提供了一些類似的將循環關係序列化爲XML的方法,而不會影響XML本身的完整性。
提示:看看'InnerException' ...沿線的某處,它會告訴你,它檢測到一個循環引用 –
這看起來像一個有用的解決方案:http://www.thomaslevesque.com/2009/06/ 12/C-父子關係和 - XML序列化 –