只要是 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/"><Tournament><Match ID="SomeMatch" /></Tournament></string>
两个问题:
- 为什么在我的 XML 中没有它时它被包装在这个字符串元素中?
- 为什么 < 被转换为 "<"和 > 到“>”
以及如何返回
<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,因此类/属性名称可能不准确。
