56

Possible Duplicate:
What is the best way to return XML from a controller's action in ASP.NET MVC?

I'm able to return JSON and partial views (html) as a valid ActionResult, but how would one return an XML string?

1

4 Answers 4

131

You could use return this.Content(xmlString, "text/xml"); to return a built XML string from an action.

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

1 Comment

If you're working with Linq to XML, creating a string form of the document is wasteful -- it's better to work with streams.
7

For JSON/XML I have written an XML/JSON Action Filter that makes it very easy to tackle without handling special cases in your action handler (which is what you seem to be doing).

1 Comment

For anyone reading this post - definately check out his filter... it works well. +1 to aleemb for sharing!
4

Another way to do this is by using XDocument:

using System.Xml.Linq;

public XDocument ExportXml()
{
    Response.AddHeader("Content-Type", "text/xml");

    return XDocument.Parse("<xml>...");
}

1 Comment

Some experimentation in MVC 4 (and possibly earlier versions) suggests that the MIME type returned here is text/html.
4

If you're building the XML using Linq-to-XML then check out my answer here. It allows you to write code like this:

public ActionResult MyXmlAction()
{
    var xml = new XDocument(
        new XElement("root",
            new XAttribute("version", "2.0"),
            new XElement("child", "Hello World!")));

    return new XmlActionResult(xml);
}

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.