web-dev-qa-db-ja.com

text / xmlとapplication / xmlのWebサービスレスポンスの違いは何ですか

これは、text/xmlapplication/xmlの違いに関する一般的な質問です。私はウェブサービス(REST - Jersey)を書くことにかなり慣れていません。私はapplication/xmlを制作してきました。それは私が今まで学んできたほとんどのチュートリアル/コード例に見られるものですが、最近text/xmlについて知り、application/xmlとはどう違うのですか。

435
Mike

これは古い質問ですが、頻繁に訪れられる明確な推奨事項が 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".
77
DaveV

RFC( 3023 )から、セクション3のXMLメディアタイプ:

XML文書 - つまり未処理のソースXML文書 - が一般ユーザーに読み取り可能の場合、text/xml application/xmlよりも望ましいです。 text/xmlを明示的にサポートしていないMIMEユーザエージェント(およびWebユーザエージェント)は、たとえばXML MIMEエンティティをプレーンテキストとして表示することにより、text/xmlとして扱います。 Application/xmlは、XML MIMEエンティティが普通のユーザーには読めない場合に適しています。

(私の強調)

396
Oded

によると この記事 application/xmlが好ましいです。


編集

私はこの記事を少しフォローアップしました。

著者は、エンコードはXML処理命令で宣言されていると主張しています。

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

text/xmlメディアタイプが使用されている場合は無視できます。

彼らは RFC 2046text/* MIMEタイプファミリー仕様の定義、特に以下の断片で論文を支持します:

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を避けるために限りません。私見、それは人間が読みやすい(読みにくい)という意味に従うことが最善であり、常に文字セットを指定することを忘れないでください。

30
hardywang

application/xmlsvnname__にはバイナリタイプとして表示されますが、text/xmlテキストファイルとして表示されます差分を表示することができます。

5

あなたの質問に答えるのではなく、単純な生活を送るために:

あなたが.NETフレームワークのエコシステムに住んでいるとき - > https://referencesource.Microsoft.com/#system.web/MimeMapping.cs 行〜430を見てください:

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

だからあなたはいつでもできる

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

正しくMIMEタイプを取得する

0
Bernhard