我有一個類,它看起來像這樣(嚴重簡化):XmlSerializer - 如何在反序列化枚舉時設置默認值?
public class Foo
{
public enum Value
{
ValueOne,
ValueTwo
}
[XmlAttribute]
public Value Bar { get; set; }
}
我從外部源接收XML文件。他們的文檔指出,Foo元素在Bar屬性中只會有「ValueOne」或「ValueTwo」(它們不提供XSD)。
所以,我反序列化這樣的:
var serializer = new XmlSerializer(typeof(Foo));
var xml = "<Foo Bar=\"ValueTwo\" />";
var reader = new StringReader(xml);
var foo = (Foo)serializer.Deserialize(reader);
...這所有的作品。
然而,昨天晚上,他們給我一些XML看起來像這個,而是和我的反序列化失敗(因爲它應該):<Foo Bar="" />
有沒有好的辦法來防守代碼解決此問題?理想情況下,我想說一些類似於「缺省值ValueOne,如果出現問題的地方」。我不想扔掉整個XML文件,因爲一個屬性被破壞了。
http://stackoverflow.com/a/1266758/485076 – sll
你可以嘗試先建立從您的輸入字符串的XML對象,然後遍歷節點和全部替換爲空值與ValueOne。 – FLClover