xml - 删除 <ArrayOf.来自 MVC Web Api 响应

标签 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>

我正在努力让它返回

<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/

相关文章:

php - 在 php 中创建具有空值的 XML 节点

javascript - 如何在vue.js中解析json?

javascript - 在另一个下拉列表中选择特定选项时删除 DropDownListFor 选择

asp.net-mvc - Controller JsonResult 方法总是返回状态码 200 (OK)

asp.net-mvc - MVC 可选参数默认值

java - 在这种情况下如何获取 Activity 上下文?

php strlen() 在不同环境下对同一个字符串获取不同的值

asp.net - 使用css设置kendoui样式文本框的宽度

c# - 如何检查方法是否具有属性(使用接口(interface)、转换和抽象)

c# - 使用 EF 和 LINQ 减少访问数据库的次数