2014-02-05 181 views
3

我正在將一些XML反序列化到我的類中,這一切都正常工作。我想要發生的是,如果XML不包含我的一個類屬性的元素,而不是將該屬性設置爲null,那麼我希望它等於String.Empty。XML反序列化丟失元素

例如,這是XML:

<Person> 
    <Title>Mr</Title> 
    <FullName>John Smith</FullName> 
</Person> 

這是類:

[XmlRoot("Person")] 
public sealed class PersonObject 
{ 
    [XmlElement("Title")] 
    public string NamePrefix { get; set; } 

    [XmlElement("FullName")] 
    public string FullName { get; set; } 

    [XmlElement("JobTitle")] 
    public string JobTitle { get; set; } 
} 

目前,如果我deserialise到這個對象,JOBTITLE設置爲null。我希望將其設置爲空字符串,就像我在XML中傳遞JobTitle時一樣,但將值設置爲空。

是否有可能使用序列化方法的某種屬性來做到這一點?

+0

至於我可以告訴你大概會必須創建一個從'XmlElementAttribute'繼承的自定義屬性才能完成。我不得不問,爲什麼'null'很重要?你不能在你的代碼中處理它嗎? – Yuck

+0

在我稱之爲的Web服務方法中,它不處理空值,我寧願不必做一些混亂的替換。我知道哪些字段可能爲空,因爲我在不同的XML輸入中共享模式。 – Mark

回答

7

可能做與默認值的支持字段:

private string jobTitle = ""; 

[XmlElement("JobTitle")] 
public string JobTitle { get {return jobTitle;} set {jobTitle = value;} } 

或將其設置在默認的構造函數:

public PersonObject() 
{ 
    JobTitle = ""; 
    NamePrefix = ""; 
    FullName = ""; 
} 
+0

添加JobTitle =「」;在構造函數中修復它,謝謝:) – Mark