Chr*_*int 12 xml asp.net-mvc asp.net-mvc-4 asp.net-web-api
我从标准的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>
Run Code Online (Sandbox Code Playgroud)
我试图让它返回
<Products>
<Product>
<Id>1</Id>
<Name>Tomato Soup</Name>
<Category>Groceries</Category>
<Price>1</Price>
</Product>
</Products>
Run Code Online (Sandbox Code Playgroud)
我发现许多参考各种方法可以解决这个问题,没有工作;
更改默认序列化程序不起作用.
创建客户序列化程序Product不起作用.
创建List<Product>使用适当的XmlRoot和XmlElement属性公开的新类不起作用.
添加Datacontract属性不起作用.
添加CollectionDatacontract属性不起作用.
这对其他人来说似乎很简单,除了我!
Mag*_*ing 15
请尝试使用XmlSeriazlier:
config.Formatters.XmlFormatter.UseXmlSerializer = true;
Run Code Online (Sandbox Code Playgroud)
然后尝试定义一个派生自Product集合的类,并使用[XmlRoot("Products")]将元素名称从'ArrayOfProduct'重命名为'Products'.
例如,使用类Products,而不是使用List:
[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; }
}
Run Code Online (Sandbox Code Playgroud)
ApiController的动作:
public Products Get()
{
return new Products()
{
new Product()
{
Id = 1,
Name = "Tomato Soup",
Category = "Groceries",
Price = 1
}
};
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5217 次 |
| 最近记录: |