在Nancy中定义自定义xmlns

时间:2013-01-14 12:12:47

标签: xml-namespaces nancy

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

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

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

<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框架源代码中的位置,我可以在其中更改代码以实现我的目标吗?

1 个答案:

答案 0 :(得分:3)

Response.AsXml只是一个返回XML的花哨的助手。您可以自己返回Response对象,并将ContentType和Content设置为您想要的内容。使用您想要的串行器,只需将其粘贴在响应中即可开始使用

如果你想使用Response.AsXml,那么你应该看看实现一个ISerializer并在Bootstrapper中注册它 - &gt; InternalConfiguration =&gt;串行器。 Response.AsXml将使用第一个说它可以处理xml媒体类型的ISerializer