Microsoft.AspNetCore.Mvc.Formatters.Xml.Extensions 8.0.0

dotnet add package Microsoft.AspNetCore.Mvc.Formatters.Xml.Extensions --version 8.0.0                
NuGet\Install-Package Microsoft.AspNetCore.Mvc.Formatters.Xml.Extensions -Version 8.0.0                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Microsoft.AspNetCore.Mvc.Formatters.Xml.Extensions" Version="8.0.0" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Microsoft.AspNetCore.Mvc.Formatters.Xml.Extensions --version 8.0.0                
#r "nuget: Microsoft.AspNetCore.Mvc.Formatters.Xml.Extensions, 8.0.0"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Microsoft.AspNetCore.Mvc.Formatters.Xml.Extensions as a Cake Addin
#addin nuget:?package=Microsoft.AspNetCore.Mvc.Formatters.Xml.Extensions&version=8.0.0

// Install Microsoft.AspNetCore.Mvc.Formatters.Xml.Extensions as a Cake Tool
#tool nuget:?package=Microsoft.AspNetCore.Mvc.Formatters.Xml.Extensions&version=8.0.0                

ASP.NET Core MVC Xml formatter extensions

Version 8.x.x : supports only NetCore 8.0

Version 7.x.x : supports only NetCore 7.0

Version 6.x.x : supports only NetCore 6.0

Nuget Package:

https://www.nuget.org/packages/Microsoft.AspNetCore.Mvc.Formatters.Xml.Extensions

ASP.NET Core MVC Xml formatter's extensions allow:

  1. ASP.NET MVC Core Web Application controller actions to control the Xml serialization type.
  2. Avoid the ObjectResult limitation to use only one type of MVC Xml serializer per ASP.NET MVC Core Web Application.
  3. Satisfy all possible Xml JAVA REST Web API and Xml .NET REST Web API communication scenarios.

XmlResult

An Action result which formats the given object as Xml.

  1. The XmlResult is the similar feature to JsonResult in the project "Microsoft.AspNetCore.Mvc.Formatters.Json".
  2. The property "XmlSerializerType" of the XmlResult defines which one of the MVC Xml formatters to use either XmlSerializer or DataContractSerializer.
  3. It allows to return Xml formatted response with using the HTTP Response Body.

"FromXmlBody"

Specifies an action parameter or property that should be bound with using the HTTP request Xml body.

  1. The FromBodyXmlAttribute is the similar attribute to FromBodyAttribute in the project "Microsoft.AspNetCore.Mvc".
  2. The property "XmlSerializerType" of the FromBodyXmlAttribute defines which one of the MVC Xml formatters to use either XmlSerializer or DataContractSerializer.

Example of using in the application:

Startup.cs

public void ConfigureServices(IServiceCollection services)
{
    // Add framework services.

    // "AddXmlFormaterExtensions()" initialize the Asp .Net Core MVC to use of XmlResult and FromXmlBody:
    //  - It adds the XmlSerializer and DataContractSerializer formatters to MVC.
    //  - It adds the XmlResult and FromXmlBody Extension to MVC.

    services.AddMvc().AddXmlFormaterExtensions(); 

    // or services.AddControllers().AddXmlFormaterExtensions().AddNewtonsoftJson();
}

XmlExtController.cs(Example):

/// <summary>
/// The Controller example of using of XmlResult and FromXmlBody.
/// It demonstrates how to define which of the Xml formatters DataContractSerializer
/// or/and XmlSerializer to use for input and output in the Web Application controller actions.
/// </summary>
[Route("api/[controller]")]
public class XmlExtController : Controller
{
    // GET api/[controller]/xml
    [HttpGet("xml")]
    public ActionResult GetXmlObject()
    {
        object obj = new PurchaseOrder();
        return new XmlResult(obj);
    }

    // GET api/[controller]/dcxml
    [HttpGet("dcxml")]
    public ActionResult GetDcXmlObject()
    {
        object obj = new PurchaseOrder();
        return new XmlResult(obj) { XmlSerializerType = XmlSerializerType.DataContractSerializer };
    }

    // POST api/[controller]/xml
    [HttpPost("xml")]
    public void PostXml([FromXmlBody]PurchaseOrder value)
    {
        var x = value;
        x.billTo.street += " 123";
    }

    // POST api/[controller]/dcxml
    [HttpPost("dcxml")]
    public void PostDcXml([FromXmlBody(XmlSerializerType = XmlSerializerType.DataContractSerializer)]PurchaseOrder value)
    {
        var x = value;
        x.billTo.street += "No -10";
    }

}  

Where the Models:

   [DataContract (Namespace ="http://puchase.Interface.org/Purchase.Order")]
    public class PurchaseOrder
    {
        public PurchaseOrder()
        {
            billTo = new Address() { street = "Bill to Address" };
            shipTo = new Address() { street = "Ship to  Address" };
        }
        [DataMember]
        public Address billTo;
        [DataMember]
        public Address shipTo;
    }


    [DataContract(Namespace = "http://puchase.Interface.org/Purchase.Order.Address")]
    public class Address
    {
        [DataMember]
        public string street;
    }
Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net8.0

    • No dependencies.

NuGet packages (2)

Showing the top 2 NuGet packages that depend on Microsoft.AspNetCore.Mvc.Formatters.Xml.Extensions:

Package Downloads
EY.Common.NlogCoreLib

Package Description

GraphQl.Extensions

GraphQl Extensions. Contains Xlsx output formatter, csv output formatter

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
8.0.0 22,619 11/18/2023
7.0.0 19,926 3/5/2023
6.0.0 71,160 11/14/2021
5.0.0 9,064 11/14/2020
3.1.0 496,479 1/11/2020
3.0.1 2,947 9/30/2019
2.2.0 54,002 12/11/2018
2.1.0 33,825 6/5/2018
2.0.0 18,186 8/28/2017
1.1.0.2 17,533 1/17/2017

Released for  Microsoft.AspNetCore.App 8.0.0