从操作结果中删除 XML 个命名空间
Remove XML Namespaces from action Result
使用 Web API 和 .NET Core,当我 return 一个 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")));
XmlSerializer
和 DataContractSerializer
格式化程序都为 application/xml
和 text/xml
查找 Content-Type
或 Accept
header 值。因此,如果您注册了第一个格式化程序,则可能只有其中一个格式化程序会生效。
如果你想支持 XmlSerializer,那么只注册那个格式化程序,如果你出于某种原因想同时支持这两者,请确保更改他们寻找的 content-types。示例:application/xml-dcs、text/xml-dcs、application/xml-xmlser、text/xml-ser
如果出现上述问题,DataContractSerializerOutputFormatter 可能正在写出响应,因此您没有看到它生效。
使用 Web API 和 .NET Core,当我 return 一个 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")));
XmlSerializer
和 DataContractSerializer
格式化程序都为 application/xml
和 text/xml
查找 Content-Type
或 Accept
header 值。因此,如果您注册了第一个格式化程序,则可能只有其中一个格式化程序会生效。
如果你想支持 XmlSerializer,那么只注册那个格式化程序,如果你出于某种原因想同时支持这两者,请确保更改他们寻找的 content-types。示例:application/xml-dcs、text/xml-dcs、application/xml-xmlser、text/xml-ser
如果出现上述问题,DataContractSerializerOutputFormatter 可能正在写出响应,因此您没有看到它生效。