Определение пользовательских xmlns в Нанси
В веб-сервисе Nancy .Net REST мне нужно иметь возможность указать пользовательский xmlns:xsd для корневого элемента xml-дерева, который создается при использовании приведенного ниже кода - это возможно?:
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>
Предоставляет ли Нэнси возможность изменить значения xmlns:xsd на какой-либо собственный URL-адрес схемы? Так что я бы получил что-то вроде...
<ArrayOfBook
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://myschemaurl.com/2007/MyCustomXMLSchema">
<Book>
...
</Book>
...
</ArrayOfBook>
Если вышеперечисленное невозможно с Нэнси из коробки, кто-то может указать мне место в исходном коде инфраструктуры Нэнси, где я мог бы изменить код для достижения своей цели?
1 ответ
Response.AsXml - это просто полезный помощник для возврата XML. Вы можете вернуть объект Response по своему усмотрению и установить ContentType и Content на любое содержимое, которое вы хотите. Используйте тот сериализатор, который вам нужен, и просто вставьте его в ответ, и все готово
Если вы хотите использовать Response.AsXml, то вам следует взглянуть на реализацию ISerializer и зарегистрировать его в Bootstrapper -> InternalConfiguration => Serializer. Response.AsXml будет использовать первый ISerializer, который говорит, что он может обрабатывать тип носителя xml