1

我有一个用 C# 编写的 Web 服务,在这个项目中我添加了一个名为 ProjectDTO 的模型。我有一个返回此类的一些对象的 Web 服务,我希望我的 Web 服务在我的 xml 结果中返回一个名为 Project 的节点,而不是 ProjectDTO,我该怎么做?

我尝试在我的 ProjectDTO 类上添加一些属性,例如 XmlRoot、XmlElement,但它不起作用。

谢谢

编辑

public class ProjectDTO {
  //some properties
}

我的网络服务(.asmx 文件.. 这是一个来自 asp.net 2.0 的简单网络服务)方法:

[WebMethod]
public ProjectDTO[] GetProjects();

我的输出xml:

<ArrayOfProjectDTO ...> 
 <ProjectDTO>
  <Id>...</Id>
  <Nome>...</Nome>
 </ProjectDTO>
</ArrayOfProjectDTO>

我想在这个 xml 输出中将所有“ProjectDTO”所在的位置重命名为“Project”,这可能吗?

谢谢

4

1 回答 1

2

我知道我以前编写过类似的东西,只是花了我一段时间才记起来。

这是您正在寻找的格式:

public class WebService : System.Web.Services.WebService {
    [WebMethod]
    [return: XmlRoot(ElementName = "Projects")]
    public ProjectDTO[] HelloWorld()
    {
        return new ProjectDTO[] { new ProjectDTO(), new ProjectDTO(), new ProjectDTO(), }; 
    }       
}

[XmlType(TypeName = "Project")]
public class ProjectDTO
{
    public string Blah { get; set; }
}

关键是 XmlRootAttribute 和 XmlTypeAttribute。

于 2012-04-25T13:41:27.253 回答