我们正在将Web API与MVC 4一起使用,并且在驼峰情况下需要具有我们的请求/响应。

我们使用以下代码为JSON完成了此操作:

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

不幸的是,相同的代码不适用于XmlMediaTypeFormatter

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

最佳答案

解决方案1:使用XmlSerializer

如果需要匹配现有的XML模式(在您的情况下,例如使用驼峰案例),则应使用XmlSerializer类对生成的XML进行更多控制。
要使用XmlSerializer,您需要在global.asax文件或API Controller 类的构造函数中设置以下配置。

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 Formatter类

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

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

关于c# - ASP.NET Web API-驼峰式XML,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16835100/

10-10 10:25