Skip to main content
 首页 » 编程设计

c#之从 Web API C# 返回 XML

2024年01月22日28mfrbuaa

只要是 Web API 方面的新手,这里都是新手。

网络 API:

[HttpGet] 
    public IHttpActionResult Test() 
    { 
        var doc = new XmlDocument(); 
        XmlElement tournament = (XmlElement)doc.AppendChild(doc.CreateElement("Tournament")); 
        XmlElement match = (XmlElement)tournament.AppendChild(doc.CreateElement("Match")); 
        match.SetAttribute("ID", "SomeMatch"); 
 
        return Ok(doc.InnerXml); 
    } 

结果:

<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">&lt;Tournament&gt;&lt;Match ID="SomeMatch" /&gt;&lt;/Tournament&gt;</string>

两个问题:

  1. 为什么在我的 XML 中没有它时它被包装在这个字符串元素中?
  2. 为什么 < 被转换为 "<"和 > 到“>”

以及如何返回

<Tournament> 
<Match ID="SomeMatch" /></Tournament> 

请您参考如下方法:

由于您从操作中返回一个字符串,ASP.Net Web API 正在创建等效的 XML 来表示一个字符串。

现在,如果您要确保 API 使用 XML 序列化,客户端可以将 accept header 添加到请求中。或者,您可以通过使用以下构造函数返回 Content 以您拥有的方式或在操作本身中指定格式化程序:

return Content (HttpStatusCodeHere, doc.DocumentElement, Configuration.Formatters.XmlFormatter) 

请注意,我无权访问 Visual Studio,因此类/属性名称可能不准确。