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

412

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

  • 0
    Как отмечено в ответе DaveV и в заголовке по адресу tools.ietf.org/html/rfc3023 , RFC 3023 (цитируемый ответом Одеда, принятый в настоящее время) устарел. Более новый RFC 7303 фактически дает значительно иной ответ на этот вопрос, чем раньше RFC 3023. Поэтому я думаю, что для будущих читателей будет полезно, если вы примете ответ DaveV, так что самая актуальная информация будет храниться в верхней части списка ответов.
  • 0
    На основании приведенного ниже Дейва V и Мариана Черны кажется, что application / xml предпочтительнее, если вы делали что-то новое.
Теги:
rest
jersey

5 ответов

406
Лучший ответ

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

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

(акцент мой)

  • 1
    Итак, читая ту часть, которую вы цитировали, подумайте, как выглядит нечитаемый человеком XML, поскольку XML в значительной степени является текстом. Я полагаю, если вы внедрили двоичные данные или данные в кодировке base64 ...
  • 6
    @drachenstern - я думаю, что неописательные элементы и атрибуты более вероятны ( <a1 d="" g=""> , например, как нечитаемые случайными пользователями).
Показать ещё 10 комментариев
56

Это старый вопрос, но тот, который часто посещают, и четкие рекомендации теперь доступны из RFC 7303, который устарел 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".
  • 1
    В приведенном абзаце упоминается информация о регистрации в IANA, которая (проверяя раздел 9.1) касается также кодировки, поэтому не должно быть никаких различий в обработке набора символов между application/xml и text/xml . Кроме того, я рассматриваю эту часть реферата: «Эта спецификация стандартизирует ... application / xml ... при определении text / xml ... как псевдонима ...», что означает, что application/xml и text/xml эквивалентны и нет предпочтения одного по отношению к другому.
31

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


РЕДАКТИРОВАТЬ

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

Автор утверждает, что кодировка объявлена в инструкциях по обработке 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.

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

  • 1
    +1 за ссылку. Как вы думаете, какой основной вывод сделан в статье? Может быть, «в статье говорится, что кодировка файла игнорируется, что означает, что вы не можете отправлять utf-8 и двоичные данные в файл с заголовком text / xml», также это проверено?
  • 0
    Я согласен с @Shanimal, ответ должен включать суть статьи, так как ссылка не может длиться вечно. Его исчезновение сделает ответ практически бесполезным. Может ли кто-нибудь подтвердить утверждение об игнорировании инструкций по обработке XML, касающихся кодирования?
Показать ещё 2 комментария
5

application/xml рассматривается как svn как двоичный, тогда как text/xml как текст, для которого может отображаться diff.

0

не для ответа на ваш вопрос, а для обеспечения простой жизни:

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

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

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

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

чтобы правильно определить ваш миметип

Ещё вопросы

Сообщество Overcoder
Наверх
Меню