【问题标题】:Return HttpResponseMessage with XML data返回带有 XML 数据的 HttpResponseMessage
【发布时间】:2013-04-22 15:44:45
【问题描述】:

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

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>

【问题讨论】:

    标签: c# xml asp.net-mvc linq


    【解决方案1】:

    您可以将结果包装在根元素中:

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

    【讨论】:

      猜你喜欢
      • 2021-04-11
      • 2016-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-09
      • 2015-02-21
      • 2016-05-20
      • 2018-01-25
      相关资源
      最近更新 更多