ASP.NET Web API - XML in camelcase

本文关键字:XML in camelcase API NET Web ASP | 更新日期: 2023-09-27 18:16:17

我们正在使用MVC 4的Web API,并且要求我们的请求/响应是驼峰的。

我们已经用以下代码完成了JSON:

var jsonFormatter = config.Formatters.OfType<JsonMediaTypeFormatter>().Single();
jsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();

同样的代码不幸不能用于XmlMediaTypeFormatter .

在驼峰情况下格式化XML的最优雅的解决方案是什么?

ASP.NET Web API - XML in camelcase

解决方案1:使用XmlSerializer

如果您需要匹配现有的XML模式(在您的情况下,如使用驼峰大小写)。您应该使用XmlSerializer类对生成的XML有更多的控制。要使用XmlSerializer,您需要在全局中设置以下配置。

var xml = GlobalConfiguration.Configuration.Formatters.XmlFormatter;
xml.UseXmlSerializer = true;

在做了这个改变之后,你可以为你的实体添加[DataContract]和[DataMember],这将影响XML的结果

[DataContract(Name = "USER")]
public class User
{
    [DataMember(Name = "FIRSTNAME")]
    public string FirstName;    
    [DataMember(Name = "LASTNAME")]
    public string LastName;
}

解决方案2:创建自定义XML格式化器类

您应该开发自己的Media Formatter类并将其设置为默认的XML格式化器。它将比解决方案1花费更长的时间和精力。要创建自定义媒体格式化程序类,请参见下面的链接。

http://www.asp.net/web-api/overview/formats-and-model-binding/media-formatters