如何配置.net core api中使用的默认XmlSerializer

Con*_*hop 5 c# xml .net-core asp.net-core

有谁知道如何配置在 .net core api 项目的启动类使用 IMVCBuilder 时添加的 XML 序列化器。具体来说,当你使用这个时:

services.AddMvc()
    .AddJsonOptions(options =>
    {
        options.SerializerSettings.DateFormatHandling = Newtonsoft.Json.DateFormatHandling.IsoDateFormat; // UTC (ISO 8601) format for dates
        options.SerializerSettings.NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore;
    })
    .AddXmlSerializerFormatters()
    .AddXmlDataContractSerializerFormatters()
Run Code Online (Sandbox Code Playgroud)

我尝试使用AddXmlOptions扩展方法,但该类没有属性MvcXmlOptions(除了AllowRfc7807CompliantProblemDetailsFormat

我尝试配置的具体设置是省略根元素中的 xml 声明。这里有很多解决这个问题的答案,但它们都涉及实例化一个新的 XmlSerializer。当 Accept 标头设置为时,我需要设置来应用控制器使用的默认序列化器application/xml

Kir*_*kin 7

您可以使用XmlWriterSettings如下所示的方法来获取输出格式化程序使用的内容:

services.Configure<MvcOptions>(options =>
{
    var xmlWriterSettings = options.OutputFormatters
        .OfType<XmlSerializerOutputFormatter>()
        .Single()
        .WriterSettings;

    xmlWriterSettings.OmitXmlDeclaration = true;
});
Run Code Online (Sandbox Code Playgroud)

对的调用AddXmlSerializerFormatters添加了一个 的实例XmlSerializerOutputFormatter。上面的代码找到该特定实例并相应地修改其设置。