我想創建一個使用.NET 4.0和WCF的REST Web服務。我的REST服務正在返回一個列表,然後將其序列化爲XML。我遇到的問題是返回的XML從ArrayOf開始,我不喜歡它。ArrayOf當使用列表<T>與WCF休息服務
換句話說,現在的XML看起來是這樣的:
<ArrayOfAchievement>
<Achievement>
...
</Achievement>
</ArrayOfAchievement>
我寧願有XML是這樣的:
<Achievements>
<Achievement>
...
</Achievement>
</Achievements>
如果我創建一個新的類,並調用它AchievementsList,其中有表的屬性<成就>,就像這樣:
public class AchievementsList
{
public List<Achievement> Achievements { get; set; }
}
的n具有我的服務回報上面的類,而不是名單<成就>的XML最終看起來像這樣:
<AchievementsList>
<Achievements>
<Achievement>
...
</Achievement>
</Achievements>
</AchievementsList>
哪項是錯誤的(因爲它增加了一個不屬於有另一種級別)。
的另一個問題是,我還需要一個命名空間應用於對象,像這樣:
[XmlRoot(Namespace="NameSpaceURL")]
public class AchievementsList
{
public List<Achievement> Achievements { get; set; }
}
,我不能做,如果我只是返回一個列表<成就>。
那麼我能做些什麼來解決這兩個問題呢?
巴拉
當我添加ElementName屬性時,什麼都不會發生。這裏是我的代碼:http://screencast.com/t/MGJkY2MxY ...如果我改變它,以便DataContract和DataMember更改元素名稱,它會做一些奇怪的事情。這裏的代碼在這種情況下:http://screencast.com/t/MGZkY2M0O ...結果:http://screencast.com/t/OWYxYmRlZmQt – Bara 2010-06-22 15:38:07
'[XmlElement(「Achievement」)]'只設置「成就」中的成就的孩子元素 - 它仍然留給你3級元素。 – JoeGaggler 2010-06-28 23:36:47
我在推薦它之前測試了我發佈的代碼,輸出結果是我的測試儀控制檯應用程序吐出的副本和粘貼。隨意將其插入到您自己的測試應用程序中,並讓我知道你是否得到不同的結果。 – 2010-06-29 12:44:44