如何使用Request.CreateResponse控制xml中的节点名称?

时间:2013-04-21 00:53:01

标签: c# asp.net-web-api

我正在使用asp.net web api和eventhough我个人喜欢使用HttpResponseMessageRequest.CreateResponse在json中处理我的数据我可以让客户决定他们喜欢什么。

然而,当查看xml数据时,我看到节点名称很糟糕。我想知道除了更改文件名之外可以更改吗?我试过xmlRoot,但没有做任何事。

例如我像这样做回报

return Request.CreateResponse<ResponseResult<List<PersonSearchDto>>>(HttpStatusCode.OK, p);

我得到一个名为this this

的根节点
ResponseResultOfArrayOfPersonSearchK0AojvId

如果我可以重命名为Persons

,那就太好了

2 个答案:

答案 0 :(得分:0)

Global.asax.cs

中添加此行
GlobalConfiguration.Configuration.Formatters.XmlDataContractSerializer = true;

然后按this MSDN article中的说明使用[DataMember][DataContract]装饰您的类和属性:

namespace MyTypes
{
    [DataContract]
    public class PurchaseOrder
    {
        private int poId_value;

        // Apply the DataMemberAttribute to the property.
        [DataMember]
        public int PurchaseOrderId
        {

            get { return poId_value; }
            set { poId_value = value; }
        }
    }
}

答案 1 :(得分:0)

解决问题的正确方法是使用CollectionDataContractAttribute:

http://msdn.microsoft.com/en-us/library/system.runtime.serialization.collectiondatacontractattribute.aspx

所以在你的情况下,你可以有这样的类型:

[CollectionDataContract(Name = "Persons")]
public class PersonResults : List<PersonSearchDto>
{
}