webentwicklung-frage-antwort-db.com.de

Was ist der Unterschied zwischen text/xml und application/xml für Web-Service-Antworten?

Dies ist eher eine allgemeine Frage bezüglich des Unterschieds zwischen text/xml und application/xml. Ich bin relativ neu im Schreiben von Webservices (REST - Jersey). Ich habe application/xml produziert, da dies in den meisten Tutorials/Codebeispielen auftaucht, die ich zum Lernen verwendet habe, aber kürzlich habe ich etwas über text/xml erfahren Würden Sie es über application/xml verwenden?

412
Mike

Dies ist eine alte Frage, die jedoch häufig besucht wird, und klare Empfehlungen sind jetzt in RFC 7303 verfügbar, die RFC3023 überflüssig macht. In Kürze (Abschnitt 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".
61
DaveV

Aus dem RFC ( 3023 ) unter Abschnitt 3, XML-Medientypen:

Wenn ein XML-Dokument, dh das unverarbeitete, XML-Quelldokument - ist für gelegentliche Benutzer lesbar, text/xml ist .__ vorzuziehen. Anwendung/XML. MIME-Benutzeragenten (und Webbenutzeragenten), die nicht explizite Unterstützung für text/xml haben, wird es als text/plain für .__ behandelt. Beispiel, indem Sie die XML-MIME-Entität als Nur-Text anzeigen. Application/xml ist vorzuziehen, wenn die XML-MIME-Entität nicht lesbar ist von gelegentlichen Benutzern.

(Hervorhebung meines)

388
Oded

Gemäß diesem Artikel application/xml wird bevorzugt.


BEARBEITEN

Ich habe den Artikel ein wenig weiterverfolgt. 

Der Autor behauptet, dass die Kodierung in XML-Verarbeitungsanweisungen deklariert wurde, wie:

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

kann ignoriert werden, wenn der Medientyp text/xml verwendet wird.

Sie unterstützen die These mit der Definition der text/* MIME-Typfamilienspezifikation in RFC 2046 , insbesondere das folgende Fragment:

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.

Demnach können solche Schwierigkeiten vermieden werden, wenn der MIME-Typ application/xml verwendet wird. Ob es wahr ist oder nicht, ich würde nicht so weit gehen, text/xml zu vermeiden. IMHO ist es am besten, die Semantik der Lesbarkeit von Menschen (Nichtlesbarkeit) zu befolgen und immer daran zu denken, den Zeichensatz anzugeben.

30
hardywang

application/xml wird von svn als binary type gesehen, wohingegen text/xml als text file angezeigt wird, für die ein Diff angezeigt werden kann.

5

nicht um Ihre Frage zu beantworten, sondern um ein einfaches Leben zu ermöglichen:

wenn Sie im .NET Framework-Ökosystem leben -> haben Sie einen Blick auf https://referencesource.Microsoft.com/#system.web/MimeMapping.cs line 430

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

das kannst du immer tun

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

um den Mimetyp richtig zu erhalten

0
Bernhard