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

sdm*_*ler 4 c# service soap object

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

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

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

什么是最好的使用方法.

现在我得到的只是

<Artist>
    <Name>string</Name>
    <Albums>
        <AlbumName>string</AlbumName>
        <Album xsi:nil="true" />
    <Album xsi:nil="true" />
    </Albums>
    <Albums>
        <AlbumName>string</AlbumName>
        <Album xsi:nil="true" />
        <Album xsi:nil="true" />
    </Albums>
</Artist>
Run Code Online (Sandbox Code Playgroud)

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

任何建议,将不胜感激!

p.c*_*ell 8

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

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

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

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

单击该按钮可运行方法.

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

  [WebMethod]
  public List<Artist> ListAllArtists()
  {
      List<Artist> all = new List<Artist>();
      Album one = new Album { Name = "hi", SongNames = new List<string> { "foo", "bar", "baz" } };
      Album two = new Album { Name = "salut", SongNames = new List<string> { "green", "orange", "red" } };
      Album three = new Album { Name = "hey", SongNames = new List<string> { "brown", "pink", "blue" } };
      Album four = new Album { Name = "hello", SongNames = new List<string> { "apple", "orange", "pear" } };

      all.Add(new Artist { Albums = new List<Album> { one }, Name = "Mr Guy" });
      all.Add(new Artist { Albums = new List<Album> { two }, Name = "Mr Buddy" });
      all.Add(new Artist { Albums = new List<Album> { three, four }, Name = "Mr Friend" });

      return all;        
  }

public class Artist
{
    public List<Album> Albums;
    public string Name;
}

public class Album
{
    public string Name;
    public List<string> SongNames;
}
Run Code Online (Sandbox Code Playgroud)