7

我们正在使用带有 MVC 4 的 Web API,并且要求我们的请求/响应以驼峰形式出现。

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

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

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

在骆驼案例中格式化 XML 的最优雅的解决方法是什么?

4

1 回答 1

5

解决方案 1:使用 XmlSerializer

如果您需要匹配现有的 XML 模式(在您的情况下,例如使用骆驼案例。)您应该使用 XmlSerializer 类来更好地控制生成的 XML。要使用 XmlSerializer,您需要在 global.asax 文件或 API 控制器类的构造函数中设置以下配置。

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 类

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

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

于 2014-04-07T16:59:28.167 回答