[英]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.