从操作结果中删除XML命名空间

时间:2016-07-22 17:14:24

标签: asp.net-web-api asp.net-core .net-core

使用Web API和.NET Core,当我返回XML结果时,我得到以下内容:

    <Test xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <Response>
        <Status>0</Status>
    </Response>
</Test>

如何删除命名空间?

这是我的startup.cs文件的一部分

 services
            .AddMvc(config =>
            {
                // Add XML Content Negotiation
                config.RespectBrowserAcceptHeader = true;
                config.InputFormatters.Add(new XmlSerializerInputFormatter());
                config.OutputFormatters.Add(new XmlSerializerOutputFormatter(new XmlWriterSettings
                {
                    OmitXmlDeclaration = true,

                }));
            })
            .AddXmlDataContractSerializerFormatters()
            .AddXmlSerializerFormatters()
            .AddMvcOptions(opt => opt.FormatterMappings.SetMediaTypeMappingForFormat("xml", new MediaTypeHeaderValue("application/xml")));

1 个答案:

答案 0 :(得分:0)

XmlSerializerDataContractSerializer格式化工具都会查找Content-TypeAccept的{​​{1}}或application/xml标头值。因此,如果您同时注册第一个格式化程序,则只有一个格式化程序才能生效。

如果要支持XmlSerializer,则只注册该格式化程序,如果由于某种原因要同时支持这两种格式化程序,请确保更改它们要查找的内容类型。示例:application / xml-dcs,text / xml-dcs,application / xml-xmlser,text / xml-ser

如果出现上述问题,DataContractSerializerOutputFormatter可能会写出响应,因此您没有看到它生效。