修改序列化ASP.NET WebAPI对象中的xml数组元素名称

hei*_*ert 14 c# asp.net xml-serialization netdatacontractserializer asp.net-web-api

在WebAPI控制器中返回对象列表时,我一直在努力输出自定义的根xml元素.

我的控制器方法看起来像这样:

    public List<Product> Get()
    {
        return repository.GetProducts();
    }
Run Code Online (Sandbox Code Playgroud)

它呈现像这样的xml输出:

<ArrayOfProduct>
  <Product>
    <Name>Product1</Name>
  </Product>
  <Product>
    <Name>Product2</Name>
  </Product>
</ArrayOfProduct>
Run Code Online (Sandbox Code Playgroud)

我想改变<ArrayOfProduct>,<Products>但没有找到这样做的方法.

我尝试了不同的属性DataContractDataMember属性无济于事.

有没有人知道是否有办法做我想做的事情,没有把我的List<Product>对象包装在一个新的类中而是返回它?

Nic*_*ico 0

我猜您正在使用NetDataContractSerializer
您可以在序列化器的构造函数中指定根元素名称:

NetDataContractSerializer serializer = new NetDataContractSerializer("Products", "Your.Namespace");
Run Code Online (Sandbox Code Playgroud)

看看不同的重载:

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