在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框架源代码中的位置,我可以在其中更改代码以实现我的目标吗?
答案 0 :(得分:3)
Response.AsXml只是一个返回XML的花哨的助手。您可以自己返回Response对象,并将ContentType和Content设置为您想要的内容。使用您想要的串行器,只需将其粘贴在响应中即可开始使用
如果你想使用Response.AsXml,那么你应该看看实现一个ISerializer并在Bootstrapper中注册它 - &gt; InternalConfiguration =&gt;串行器。 Response.AsXml将使用第一个说它可以处理xml媒体类型的ISerializer