2011-04-19 48 views
2

我使用List對象時遇到了問題:WCF XML結構 - 如何刪除包裝節點?

[DataContract] 
public class Recipe 
{ 
     [DataMember(Name="Allergies")] 
     public List<AllergyModel> Allergies { get; set; } 
} 

[DataContract]  
public class AllergyModel 
{ 
    public string Allergy { get; set; } 
} 

如何使生產不包括AllergyModel節點的XML?當我讀取配方參數時,Allergies列表屬性爲空,因爲在原始XML中,結構沒有AllergyModel節點。

<Allergies> 
    <a:AllergyModel> 
     <a:Allergy>nuts</a:Allergy> 
    </a:AllergyModel> 
    <a:AllergyModel> 
     <a:Allergy>wheat</a:Allergy> 
    </a:AllergyModel> 
</Allergies> 

回答

3

嘗試使用自定義的集合,而不是:

[CollectionDataContract(Name = "Allergies", ItemName = "Allergy")] 
public class AllergyList : List<string> 
{ 
    ... 
} 

使用此集合,而不是List<AllergyModel>。重要的是您可以傳遞自定義集合中的項目名稱。

+1

謝謝你,我的結構是現在 堅果小麥 但是,當我檢查公衆的XElement SubmitRecipe(配方配方) recipe.Allergies的計數爲0,有什麼想法? 我的例子是這樣的(我正在接收簡單的數據類型,而不是集合)。 \t \t \t 堅果 \t \t 小麥 \t KevinUK 2011-04-19 13:34:18

+0

我不知道我理解當前的問題。 – 2011-04-21 21:01:47

1

您可以使用MessageContract屬性,而不是和設置IsWrapped參數設置爲false

+0

嗨凱文,只是爲了我的信息,你能告訴我爲什麼messageContract不適合你的casE嗎? – 2011-04-20 05:21:34