Web API:XML格式的响应中的xml-stylesheet指令

时间:2015-04-15 05:56:38

标签: xml xslt asp.net-web-api

我有一个基于MS Web API 2的Web服务,它根据请求标头(作为Web服务应该)返回XML或JSON格式的响应。除了某些端点,它基本上提供已经存在的XML文档,小编辑。当在浏览器中查看这些文档时,它们将显示为原始XML,以及消息“此XML文档似乎没有与之关联的任何样式信息。”

实际上,这些XML文档 do 具有样式表,并且样式表指令 包含在原始文档中。 (样式表也可以通过Web服务器获得)但是,XmlDocument对象不可序列化,因此我将返回XmlDocument.DocumentElement个对象。作为XmlElements,这些是可序列化的,但不包括样式表规范。如何告诉Web API在请求响应中包含xml-stylesheet指令?

1 个答案:

答案 0 :(得分:1)

如果这些“已存在的XML文档”只是文件,那么我宁愿设置直接的Web服务器访问权限。

但是,如果情况不是这样或不可接受,我会直接将XML作为来自Web API的字符串消息返回:

public ResponseMessageResult Get()
{
    var xmlString = "...";
    var content = new StringContent(xmlString, Encoding.UTF8, "application/xml");
    var message = new HttpResponseMessage {Content = content};

    return new ResponseMessageResult(message);
}

<强>更新

如果使用XmlDocument是严格要求,则可以使用StringWriter将其转换为字符串:

public ResponseMessageResult Get(int id)
{
    var xmlDocument = new XmlDocument(); // Load actual XML document

    var stringWriter = new StringWriter();
    xmlDocument.Save(stringWriter);

    var content = new StringContent(stringWriter.ToString(), stringWriter.Encoding, "application/xml");
    var message = new HttpResponseMessage {Content = content};

    return new ResponseMessageResult(message);
}