1261 Stimmen

Was bedeutet <![CDATA[]]> in XML?

Ich finde das oft seltsam CDATA Tag einfügen XML Dateien:

<![CDATA[some stuff]]>

Ich habe festgestellt, dass dies CDATA Tag kommt immer am Anfang, und dann folgen einige Dinge.

Aber manchmal wird sie genutzt, manchmal nicht. Ich nehme an, es soll markieren, dass some stuff sind die "Daten", die danach eingefügt werden. Aber welche Art von Daten ist some stuff ? Ist nicht alles, was ich in XML-Tags schreibe, eine Art von Daten?

20voto

LadyCygnus Punkte 603

Ein weiteres Beispiel für seine Verwendung:

Wenn Sie einen RSS-Feed (xml-Dokument) haben und eine einfache HTML-Kodierung in die Anzeige der Beschreibung einfügen möchten, können Sie CData verwenden, um sie zu kodieren:

<item>
  <title>Title of Feed Item</title>
  <link>/mylink/article1</link>
  <description>
    <![CDATA[
      <p>
      <a href="http://stackoverflow.com/mylink/article1"><img style="float: left; margin-right: 5px;" height="80" src="/mylink/image" alt=""/></a>
      Author Names
      <br/><em>Date</em>
      <br/>Paragraph of text describing the article to be displayed</p>
    ]]>
  </description>
</item>

Der RSS-Reader zieht die Beschreibung ein und rendert den HTML-Code innerhalb des CDATA-Bereichs.

Hinweis: Nicht alle HTML-Tags funktionieren - ich denke, es hängt von dem von Ihnen verwendeten RSS-Reader ab.


Und zur Erklärung, warum in diesem Beispiel CData (und nicht die entsprechenden pubData- und dc:creator-Tags) verwendet wird: Es geht um die Anzeige auf einer Website mit einem RSS-Widget, für das wir keine echte Formatierungskontrolle haben.

So können wir die Höhe und Position des eingefügten Bildes festlegen, den Namen des Autors und das Datum korrekt formatieren usw., ohne dass ein neues Widget erforderlich ist. Es bedeutet auch, dass ich dies per Skript erledigen kann und nicht von Hand hinzufügen muss.

18voto

Chdid Punkte 270

Aus Wikipedia:

[In einem XML-Dokument oder einer externen geparsten Entität ist ein CDATA-Abschnitt ein Abschnitt des Elementinhalts, der für den Parser zur Interpretation markiert ist als reine Zeichendaten und nicht als Markup zu interpretieren.

http://en.wikipedia.org/wiki/CDATA

Das heißt: Text innerhalb von CDATA wird vom Parser nur als Zeichen, nicht aber als XML-Knoten erkannt.

16voto

HoangYell Punkte 2873

Eine Zeichenkette, die nicht wie üblich an XML übergeben werden kann, wird escaped:

Beispiel:

Die Zeichenfolge enthält "&".

Das können Sie nicht:

<FL val="Company Name">Dolce & Gabbana</FL>

Daher müssen Sie CDATA verwenden:

<FL val="Company Name"> <![CDATA["Dolce & Gabbana"]]> </FL>

12voto

paary Punkte 423

CDATA steht für Character Data. Damit können Sie einige Zeichen umgehen, die sonst als reguläres XML behandelt werden. Die Daten darin werden nicht geparst. Wenn Sie zum Beispiel eine URL übergeben wollen, die Folgendes enthält & enthalten, können Sie dafür CDATA verwenden. Andernfalls erhalten Sie eine Fehlermeldung, da die Datei als reguläres XML geparst wird.

7voto

Ikke Punkte 95045

Es wird verwendet, um Daten zu enthalten, die sonst als xml angesehen werden könnten, weil sie bestimmte Zeichen enthalten.

Auf diese Weise werden die darin enthaltenen Daten zwar angezeigt, aber nicht interpretiert.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X