Sch*_*ini 7 c# asp.net xml-serialization asp.net-mvc-4 asp.net-web-api
我们正在使用带有MVC 4的Web API,并且需要在驼峰的情况下提供我们的请求/响应.
我们使用以下代码为JSON做了这个:
var jsonFormatter = config.Formatters.OfType<JsonMediaTypeFormatter>().Single();
jsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
Run Code Online (Sandbox Code Playgroud)
遗憾的是,相同的代码不起作用XmlMediaTypeFormatter.
在camel案例中格式化XML的最优雅的解决方法是什么?
小智 5
解决方案1:使用XmlSerializer
如果需要匹配现有的XML模式(在您的情况下使用驼峰大小写).您应该使用XmlSerializer类来更好地控制生成的XML.要使用XmlSerializer,您需要在global.asax文件或API控制器类的构造函数中设置以下配置.
var xml = GlobalConfiguration.Configuration.Formatters.XmlFormatter;
xml.UseXmlSerializer = true;
Run Code Online (Sandbox Code Playgroud)
进行此更改后,您可以为实体添加[DataContract]和[DataMember],这将影响XML结果.
[DataContract(Name = "USER")]
public class User
{
[DataMember(Name = "FIRSTNAME")]
public string FirstName;
[DataMember(Name = "LASTNAME")]
public string LastName;
}
Run Code Online (Sandbox Code Playgroud)
解决方案2:创建自定义XML Formatter类
您应该开发自己的Media Formatter类并将其设置为默认的XML格式化程序.它比解决方案1需要花费很长时间和精力.要创建自定义媒体格式化程序类,请参阅下面的链接.
http://www.asp.net/web-api/overview/formats-and-model-binding/media-formatters