简体   繁体   English

如何从 WEB API 请求和响应 XML 中删除命名空间?

[英]How to remove namespace from WEB API request & response XML?

在此处输入图像描述

I want to remove highlighted node from WEB API request and response.我想从 WEB API 请求和响应中删除突出显示的节点。 Below are the class Models used in web api以下是 web api 中使用的 class 型号

 [DataContract(Namespace = "")]
    public class ValidateRequest
    {
        [DataMember]
        public string Client_Code { get; set; }
        [DataMember]
        public string ClientValidateNo { get; set; }
        [DataMember]
        public string UserID { get; set; }
        [DataMember]
        public string Password { get; set; }
    }

[DataContract(Namespace = "")]
    public class ValidateResponse
    {
    }

I want to remove highlighted node from WEB API request and response.我想从 WEB API 请求和响应中删除突出显示的节点。 Below are the class Models used in web api以下是 web api 中使用的 class 型号

To achieve this function, first you need to create a class that inherits from XmlSerializerOutputFormatter :要实现这个 function,首先需要创建一个继承自XmlSerializerOutputFormatter的 class :

public class XmlSerializerOutputFormatterNamespace : XmlSerializerOutputFormatter
        {
            protected override void Serialize(XmlSerializer xmlSerializer, XmlWriter xmlWriter, object value)
            {
                //applying "empty" namespace will produce no namespaces
                var emptyNamespaces = new XmlSerializerNamespaces();
                emptyNamespaces.Add("", "any-non-empty-string");
                xmlSerializer.Serialize(xmlWriter, value, emptyNamespaces);
            }
        }

Then, add the following service in ConfigureServices in startup.cs:然后,在startup.cs的ConfigureServices中添加如下服务:

 services
    .AddMvc(options =>
    {
        options.OutputFormatters.Add(new XmlSerializerOutputFormatterNamespace());
    }).AddXmlSerializerFormatters();

In api method:在 api 方法中:

   [Produces("application/xml")]
    public IActionResult GetXml(ValidateRequest request)
    {
        ValidateResponse response = new ValidateResponse()
        {
            Amount = 100,
            ClientValidateNo = request.ClientValidateNo,
            Client_Code = request.Client_Code,
            DepositorCity = "aaa",
            DepositorName = "das",
            DepositorState = "sadasd",
            Status = "fasfas"
        };
        return Ok(response);
    }

The test result:测试结果:

在此处输入图像描述

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM