ASP.NET Core is a powerful and flexible platform for building web applications. It supports multiple data formats, including JSON and XML, and provides many tools for serialization and deserialization. In this article, we will focus on how to return XML from ASP.NET Core Web API.

To download the source code for this article, you can visit our GitHub repository.

Let’s start

XML Serialization in ASP.NET Core

XML Serialization is the process of converting an object into an XML representation that we can transmit over the network and store in a file as well. In ASP.NET Core, XML serialization is performed using the built-in XmlSerializer class, which is part of the System.Xml.Serialization namespace.

The XmlSerializer class can serialize any class that has a public default constructor and public properties or fields. It uses reflection to analyze the class structure and generates an XML schema that matches the class’s properties and fields.

Enable XML Formatters in ASP.NET Core

In order to configure our ASP.NET Core Web API to return XML, we need to configure the AddControllers method in the Startup.cs file to use the XML formatters:

Support Code Maze on Patreon to get rid of ads and get the best discounts on our products!
Become a patron at Patreon!
public void ConfigureServices(IServiceCollection services)
{
    services.AddControllers().AddXmlDataContractSerializerFormatters();
}

Likewise, if we don’t have the Startup.cs file, as it is in .NET 7, we can configure the AddControllers method in Program.cs instead:

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddControllers().AddXmlDataContractSerializerFormatters();

This code adds the XML formatters to the AddControllers object, which is used to configure the controllers in our application.

Return XML From ASP.NET Core Web API Controller

To return XML from an ASP.NET Core Web API Controller, we can use the Produces attribute to specify the MIME type of the response. However, it is also possible to receive an XML response without using this attribute. By sending an Accept header with the text/xmlvalue in our HTTP request, we can receive the XML response without specifying the Produces attribute in our controller code.

So, let’s create an action that returns an XML response:

[ApiController]
public class UserController : ControllerBase
{
    [HttpGet("{id}")]
    [Produces("application/xml")]
    public IActionResult GetUser(int id)
    {
        var user = new User { Id = id, Name = "Steve James" };
        return Ok(user);
    }
}

We define a UserController class that inherits from the ControllerBase class. It contains a GetUser method that takes an id parameter and returns a User object serialized as XML.

Finally, to test the responses properly, we can use Postman:

Return XML From ASP.NET Core Using Postman

As we can see, by calling the GetUser method, we get an XML response.

Conclusion

In this article, we have learned how to return XML from ASP.NET Core Web API. We have also seen how XML serialization works in ASP.NET Core and how to enable XML formatters.

Liked it? Take a second to support Code Maze on Patreon and get the ad free reading experience!
Become a patron at Patreon!