Return HttpResponseMessage with XML data
16,267
You could wrap the result in a root element:
[HttpGet]
public HttpResponseMessage GetPerson(int personId)
{
var doc = XDocument.Load(path);
var result = doc
.Element("Persons")
.Elements("Person")
.Single(x => (int)x.Element("PersonID") == personId);
var xml = new XElement("TheRootNode", result).ToString();
return new HttpResponseMessage
{
Content = new StringContent(xml, Encoding.UTF8, "application/xml")
};
}
Author by
tempid
Updated on June 18, 2022Comments
-
tempid almost 2 years
I've created a WebAPI using .NET. The API reads/writes data from an xml file. I have the following code and it returns the matching elements without a root element. How do I make it return with root?
API Controller:
[HttpGet] public HttpResponseMessage GetPerson(int personId) { var doc = XDocument.Load(path); var result = doc.Element("Persons") .Elements("Person") .Single(x => (int)x.Element("PersonID") == personId); return new HttpResponseMessage() { Content = new StringContent(string.Concat(result), Encoding.UTF8, "application/xml") }; }
Result:
<Person> <PersonID>1</PersonID> <UserName>b</UserName> <Thumbnail /> </Person><Person> <PersonID>2</PersonID> <UserName>b</UserName> <Thumbnail /> </Person><Person> <PersonID>4</PersonID> <UserName>a</UserName> <Thumbnail>a</Thumbnail> </Person>