我从标准 MVC 4 WebApi 项目得到以下响应;
<ArrayOfProduct xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Product>
<Id>1</Id>
<Name>Tomato Soup</Name>
<Category>Groceries</Category>
<Price>1</Price>
</Product>
</ArrayOfProduct>
我正在努力让它返回
<Products>
<Product>
<Id>1</Id>
<Name>Tomato Soup</Name>
<Category>Groceries</Category>
<Price>1</Price>
</Product>
</Products>
我发现了很多据称可以解决这个问题的各种方法的引用资料,但都没有用;
更改默认序列化程序不起作用。
为 Product
创建客户序列化程序不起作用。
创建一个具有 List<Product>
的新类使用合适的 XmlRoot 和 XmlElement 属性公开不起作用。
添加Datacontract
属性不起作用。
添加CollectionDatacontract
属性不起作用。
这对其他人来说似乎很简单,除了我!
最佳答案
尝试改用 XmlSeriazlier:
config.Formatters.XmlFormatter.UseXmlSerializer = true;
然后尝试定义一个派生自 Product 集合的类,并使用 [XmlRoot("Products")] 将元素名称从 'ArrayOfProduct' 重命名为 'Products'。
例如,不使用 List,而是使用 Products 类:
[XmlRoot("Products")]
public class Products : List<Product> { }
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public string Category { get; set; }
public double Price { get; set; }
}
ApiController 的 Action :
public Products Get()
{
return new Products()
{
new Product()
{
Id = 1,
Name = "Tomato Soup",
Category = "Groceries",
Price = 1
}
};
}
关于xml - 删除 <ArrayOf.来自 MVC Web Api 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13056518/