2

在 Nancy .Net REST web 服务中,我需要能够为使用以下代码时生成的 xml-tree 的根元素指定自定义 xmlns:xsd - 这可能吗?:

public class RequestModule : NancyModule
{
    Get["/books"] = parameters =>
    {
        return Response.AsXml(List<Book>);
    };
}

使用上面的代码调用 /books 会产生类似于...的输出

<ArrayOfBook
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <Book>
    ...
    </Book>
    ...
</ArrayOfBook>

Nancy 是否提供将 xmlns:xsd 的值更改为某些自定义架构 url 的可能性?所以我会得到类似...

<ArrayOfBook
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:xsd="http://myschemaurl.com/2007/MyCustomXMLSchema">
    <Book>
    ...
    </Book>
    ...
</ArrayOfBook>

如果开箱即用的 Nancy 无法实现上述操作,有人可以指出我可以在 Nancy 框架源代码中更改代码以实现目标的位置吗?

4

1 回答 1

3

Response.AsXml 只是一个返回 XML 的精美助手。您可以自己返回一个 Response 对象,并将 ContentType 和 Content 设置为您想要的任何内容。使用您想要的任何序列化程序,只需将其粘贴在响应中即可

如果您想使用 Response.AsXml,那么您应该考虑实现 ISerializer 并将其注册到 Bootstrapper -> InternalConfiguration => Serializers。Response.AsXml 将使用第一个表示它可以处理 xml 媒体类型的 ISerializer

于 2013-01-14T12:37:32.460 回答