首先安装Microsoft.AspNetCore.Mvc.Formatters.Xml NuGet 包。这个包跟 XML 相关,可以让我们直接读取 Xml,同时也可以把 MVC model 对象序列化成 Xml。
然后我们创建一个控制器,并添加一个 GetXml 方法。
[ApiController]
[Route("[controller]")]
public class XmlController : ControllerBase
{
[HttpGet]
[Produces("application/xml")]
public IActionResult GetXml()
{
MyModel myModel = new MyModel()
{
Id = 1,
Name = "MyModelName"
};
return Ok(myModel);
}
}
MyModel 类就是我们要序列化成 Xml 的实体类,它的属性结构如下:
public class MyModel
{
public int Id { get; set; }
public string Name { get; set; }
}
在 Startup.cs 文件中,将 AddXmlDataContractSerializerFormatters() 添加到服务集合( services)中。
public void ConfigureServices(IServiceCollection services)
{
services.AddControllersWithViews();
services.AddXmlDataContractSerializerFormatters();
}
最后,使用 Fiddler 等工具向 GetXml 接口发送 GET 请求,即可得到以下的 Xml 响应:
1
MyModelName
如果要去掉 Xml 中的标签,我们可以使用 Linq to Xml 的 XDocument 类来操作,示例代码如下:
var xmlDoc = XDocument.Parse(xmlString);
xmlDoc.Descendants().Where(e => e.IsEmpty || string.IsNullOrWhiteSpace(e.Value)).Remove();
var result = xmlDoc.ToString();
这段代码可以移