8

I have a controller which returns a data in json. I would like that method to return XML structure and get data back to XML structure.

I have added following code to WebApiConfig:

config.Routes.MapHttpRoute(
  name: "defaultapi",
  routeTemplate: "api/{controller}/{id}",
  defaults: new { id = RouteParameter.Optional }
);

config.Routes.MapHttpRoute(
  name: "VehicleApi",
  routeTemplate: "api/{controller}/{id}",
  defaults: new { id = RouteParameter.Optional }
);

config.Formatters.XmlFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/xml"));
var appXmlType = config.Formatters.XmlFormatter.SupportedMediaTypes.FirstOrDefault(t => t.MediaType == "application/xml");

Global.asax.cs

GlobalConfiguration.Configuration.Formatters.Clear();
GlobalConfiguration.Configuration.Formatters.Add(new System.Net.Http.Formatting.XmlMediaTypeFormatter());
1

3 Answers 3

18

To make ASP.NET Web API return XML, you don't need to make any code changes. Just ensure you have a header like this in the HTTP request.

Accept: application/xml

See this for more info on content negotiation.

Sign up to request clarification or add additional context in comments.

3 Comments

Where to add Accept: application/xml
also let me know where do i have to create XML structure and respected xslt file, i am doing web api in ASP.NET MVC4
Accept: application/xml should to to your request headers. Web API will automatically return XML. Here is a good post if you want to return only one format strathweb.com/2013/06/…
0

I found when using VBA MSXML2.XMLHTTP60 to make requests, setting the request header to Accept: application/xml would only return a blank xml object. To fix this, I added the following line to my WebApiConfig.cs file at the end of the Register function:

config.Formatters.Add(new XmlMediaTypeFormatter());

Then my objects were serialized as expected.

Comments

0

Make sure that your return type is serializable.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.