2013-04-22 96 views
4

我已经使用.NET创建了WebAPI。 API从xml文件读取/写入数据。我有以下代码,它返回没有根元素的匹配元素。我如何使它以root身份返回?用XML数据返回HttpResponseMessage

API控制器:

[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") }; 
} 

结果:

<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> 

回答

13

你可以包裹导致根元素:

[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") 
    }; 
} 
+0

谢谢,成功了! – tempid 2013-04-22 18:02:23