C#.NET Web服务并返回具有子对象列表的对象列表

我正在构建一个Web服务来传回一个(艺术家)对象列表。 在艺术家对象内部有一个(专辑)对象列表。 在Album对象中有一个歌曲列表。

所以基本上我正在建立一个大的父母音乐树。

我的问题是,如何使用SOAP传递此信息?

什么是最好的使用方法。

现在我得到的只是

 string  string     string     

它在专辑中分解,但它显示了我存储的两张专辑。

任何建议,将不胜感激!

好消息是.NET Web服务将为您处理XML。 您所要做的就是将返回类型声明为List或类似的。 Web服务将负责将对象序列化为XML。 目前尚不清楚您是否正在推出自己的XML。

您粘贴的XML看起来像是来自WSDL。

在Visual Studio中运行项目,然后浏览到Web服务.asmx页面。 你会发现这样的东西。

要使用HTTP POST协议测试操作,请单击“调用”按钮。 替代文字

单击该按钮以运行方法。

也许尝试这个简单的测试WebMethod,如果你自己没有按预期工作: 结果将是这个XML文档 。

  [WebMethod] public List ListAllArtists() { List all = new List(); Album one = new Album { Name = "hi", SongNames = new List { "foo", "bar", "baz" } }; Album two = new Album { Name = "salut", SongNames = new List { "green", "orange", "red" } }; Album three = new Album { Name = "hey", SongNames = new List { "brown", "pink", "blue" } }; Album four = new Album { Name = "hello", SongNames = new List { "apple", "orange", "pear" } }; all.Add(new Artist { Albums = new List { one }, Name = "Mr Guy" }); all.Add(new Artist { Albums = new List { two }, Name = "Mr Buddy" }); all.Add(new Artist { Albums = new List { three, four }, Name = "Mr Friend" }); return all; } public class Artist { public List Albums; public string Name; } public class Album { public string Name; public List SongNames; } 

像这样的东西:

 [DataContract] class Artist { ..... [DataMember] public List Albums; ..... } [DataContract] class Album { ..... int ID; ..... [DataMember] public List Songs; ..... } [DataContract] class Song { ..... int ID; ..... [DataMember] public string Title; ..... } 

注意:这只是为了说明如何使对象序列化。 修改它以使用属性而不是公共字段等…

您只需要实现WCF服务并使用List