c# - ASP.NET Web API - 驼峰式 XML

标签 c# asp.net asp.net-mvc-4 asp.net-web-api xml-serialization

我们正在使用带有 MVC 4 的 Web API,并且要求我们的请求/响应采用驼峰式大小写。

我们已使用以下代码为 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/

相关文章:

c# - 有没有办法在 C# 中为 sql 数据库生成 getter 和 setter?

javascript - asmx 中 webmethod 的 Ajax 方法未触发

c# - 如何计算 XML 中具有相同 innertext 值的节点数

asp.net-mvc - 如何将 BundleConfig.cs 添加到我的项目中?

asp.net-mvc - 在 Razor View 中重命名 mvc 模型对象

c# - 内部 TransactionScope 中的异常导致所有后续内部 TransactionScopes 抛出 TransactionAbortedException

c# - 在WPF中更新动态数据显示图表的有效方法

c# - CloudBlockBlob 上传的非异步版本是否已弃用

javascript - 禁用 Asp.net 按钮,然后使用 java 脚本在 5 秒后启用它

asp.net - 无法使用 mod_mono 托管 ASP.NET MVC 4 应用程序