В чем разница между text / xml и application / xml для ответа webservice


Это более общий вопрос о разнице между text/xml и application/xml. Я довольно новичок в написании веб-сервисов (REST - Джерси). Я продюсировал application/xml так как это то, что появляется в большинстве учебников / примеров кода, которые я использовал, чтобы узнать, но я недавно узнал о text/xml и было интересно, что отличается от него, и когда бы вы использовали его над application/xml?

5 384

5 ответов:

из RFC (3023), в разделе 3, типы носителей XML:

Если XML-документ -- то есть необработанный исходный XML-документ -- читаем случайные пользователи, text / xml предпочтительнее приложение / xml. Агенты пользователей MIME (и веб-агенты пользователей), которые не работают иметь явную поддержку текста / xml будет рассматривать его как текст / простой, для например, путем отображения сущности XML MIME в виде обычного текста. Application / xml предпочтительнее, когда XML MIME entity прочитать от случайных пользователей.

(выделено мной)

Это старый вопрос, но тот, который часто посещают и четкие рекомендации, теперь доступны от RFC7303 который устаревает RFC3023. В двух словах (раздел 9.2):

The registration information for text/xml is in all respects the same
as that given for application/xml above (Section 9.1), except that
the "Type name" is "text".

по данным в этой статье приложение/XML является предпочтительным.


EDIT

Я сделал небольшое продолжение статьи.

автор утверждает, что кодировка объявлена в инструкции по обработке XML, например:

<?xml version="1.0" encoding="UTF-8"?>

можно игнорировать, когда text/xml используется тип носителя.

они поддерживают тезис с определением text/* спецификация семейства типов MIME в RFC 2046, а конкретно следующий фрагмент:

4.1.2.  Charset Parameter

   A critical parameter that may be specified in the Content-Type field
   for "text/plain" data is the character set.  This is specified with a
   "charset" parameter, as in:

     Content-type: text/plain; charset=iso-8859-1

   Unlike some other parameter values, the values of the charset
   parameter are NOT case sensitive.  The default character set, which
   must be assumed in the absence of a charset parameter, is US-ASCII.

   The specification for any future subtypes of "text" must specify
   whether or not they will also utilize a "charset" parameter, and may
   possibly restrict its values as well.  For other subtypes of "text"
   than "text/plain", the semantics of the "charset" parameter should be
   defined to be identical to those specified here for "text/plain",
   i.e., the body consists entirely of characters in the given charset.
   In particular, definers of future "text" subtypes should pay close
   attention to the implications of multioctet character sets for their
   subtype definitions.

по их словам, таких трудностей можно избежать при использовании application/xml тип MIME. Правда это или нет, я бы не пошел так далеко, чтобы избежать text/xml. ИМХО, лучше всего просто следовать семантике читаемости человека (нечитаемости) и всегда помнить, чтобы указать кодировку.

application/xml видит svn как binary введите whereas text/xml как текст файл, для которого может отображаться разница.

не для того, чтобы ответить на ваш вопрос, а чтобы обеспечить простую жизнь:

когда вы живете в экосистеме .NET framework - > посмотрите на https://referencesource.microsoft.com/#system.web/MimeMapping.cs строка ~430:

AddMapping(".xml", "text/xml");

, Так что вы всегда можете сделать

string mimeType = System.Web.MimeMapping.GetMimeMapping(string yourFileName)

чтобы получить ваш mimetype правильно