@Multigame

Почему при серриализации xml отсутсвует тег версии?

Добрый день.
Внезапно потребовалось чтоб .NET WebAPI сервис возвращал ответы в формате XML.
В принципе проблемы в этом нет, но меня смущает что возвращаемый XML не содержит "тега объявления XML"
т.е. <?xml version="1.0" encoding="UTF-8" ?>
В принципе все данные этого тега конечно включены в заголовки http ответа.... Но с детства считал что xml без этого объявления - не xml

Собственно вопрос. Если мы говорим не о файлах, а именно http ответах, обязательно ли наличие такого "объявления" и не будет ли проблем с совместимостью для разных "клиентов" читающих мои ответы?

И можно ли как-то C# заставить формировать данное объявление не нарушая стандартный механизм webApi?

Я пока нашел способ формировать в методе в поток xml документ-ответ и отправлять его строкой.
Но вот в штатном механизме, ни в XmlMediaTypeFormatter, ни в самой возвращаемой структуре не нашел как это сделать
  • Вопрос задан
  • 46 просмотров
Решения вопроса 1
@Multigame Автор вопроса
при инициализации сериалайза декларация формируется, а вот при отправке из контроллера почему-то эта декларация уходит.

теребоньканье мсдном дало понимание что есть некий параметр OmitXmlDeclaration который вообще-то должен быть по дефолту false (т.е. выводить декларацию)

Но почему-то конструкция new XmlMediaTypeFormatter() { UseXmlSerializer = true };
Создает сериалайзер в контроллерах который имеет нестандартное значение и скрывает декларацию xml.

Короче говоря исправление в вебсеттингах при регистрации ContentNegotiationResult для XML, можно принудительно передать OmitXmlDeclaration с нужным значением.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
petermzg
@petermzg
Самый лучший программист
А почему нельзя пойти самым простым путем?
var header = "<?xml version="1.0" encoding="UTF-8" ?>";
var outtext = header + serializeText;
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы