我从标准 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 属性公开不起作用。
Adding Datacontract
属性不起作用。
Adding CollectionDatacontract
属性不起作用。
这对其他人来说似乎都很简单,除了我!
尝试改用 XmlSerializer:
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的动作:
public Products Get()
{
return new Products()
{
new Product()
{
Id = 1,
Name = "Tomato Soup",
Category = "Groceries",
Price = 1
}
};
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)