CDATA steht für Character Data und bedeutet, dass die Daten zwischen diesen Zeichenfolgen Daten enthalten, die als XML-Markup interpretiert werden könnten , aber nicht sein sollten.
Die Hauptunterschiede zwischen CDATA und Kommentaren sind:
- Wie Richard betont, ist CDATA immer noch Teil des Dokuments, ein Kommentar jedoch nicht.
- In CDATA können Sie die Zeichenfolge
]]>
( CDEnd
) nicht einfügen , während sie in einem Kommentar --
ungültig ist .
- Parameterentitätsreferenzen werden in Kommentaren nicht erkannt.
Dies bedeutet, dass diese vier XML-Schnipsel aus einem wohlgeformten Dokument stammen:
<!ENTITY MyParamEntity "Has been expanded">
<!--
Within this comment I can use ]]>
and other reserved characters like <
&, ', and ", but %MyParamEntity; will not be expanded
(if I retrieve the text of this node it will contain
%MyParamEntity; and not "Has been expanded")
and I can't place two dashes next to each other.
-->
<![CDATA[
Within this Character Data block I can
use double dashes as much as I want (along with <, &, ', and ")
*and* %MyParamEntity; will be expanded to the text
"Has been expanded" ... however, I can't use
the CEND sequence. If I need to use CEND I must escape one of the
brackets or the greater-than sign using concatenated CDATA sections.
]]>
<description>An example of escaped CENDs</description>
<!-- This text contains a CEND ]]> -->
<!-- In this first case we put the ]] at the end of the first CDATA block
and the > in the second CDATA block -->
<data><![CDATA[This text contains a CEND ]]]]><![CDATA[>]]></data>
<!-- In this second case we put a ] at the end of the first CDATA block
and the ]> in the second CDATA block -->
<alternative><![CDATA[This text contains a CEND ]]]><![CDATA[]>]]></alternative>
]]
und das zu verketten>
- siehe diese Antwort für das Wie und Warum.if (a[b[c]]>10) { }
.Ein CDATA-Abschnitt ist " ein Abschnitt des Elementinhalts, der markiert ist, damit der Parser ihn nur als Zeichendaten und nicht als Markup interpretiert. "
Syntaktisch verhält es sich ähnlich wie ein Kommentar:
... aber es ist immer noch Teil des Dokuments:
Versuchen Sie, Folgendes als
.xhtml
Datei zu speichern ( nicht.html
) und öffnen Sie es mit FireFox ( nicht Internet Explorer ), um den Unterschied zwischen dem Kommentar und dem CDATA-Abschnitt festzustellen . Der Kommentar wird nicht angezeigt, wenn Sie das Dokument in einem Browser anzeigen, während der CDATA-Abschnitt:Bei CDATA-Abschnitten ist zu beachten, dass sie keine Codierung haben und daher keine Möglichkeit besteht, die Zeichenfolge
]]>
in sie aufzunehmen. Alle Zeichendaten, die enthalten]]>
, müssen - soweit ich weiß - stattdessen ein Textknoten sein. Ebenso können Sie aus Sicht der DOM-Manipulation keinen CDATA-Abschnitt erstellen, der Folgendes enthält]]>
:Dieser DOM-Manipulationscode löst entweder eine Ausnahme aus (in Firefox) oder führt zu einem schlecht strukturierten XML-Dokument: http://jsfiddle.net/9NNHA/
quelle
Ein großer Anwendungsfall: Ihre XML enthält ein Programm als Daten (z. B. ein Webseiten-Tutorial für Java). In dieser Situation enthalten Ihre Daten einen großen Teil der Zeichen, die '&' und '<' enthalten, aber diese Zeichen sind nicht als XML gedacht.
Vergleichen Sie:
mit
Insbesondere wenn Sie diesen Code aus einer Datei kopieren / einfügen (oder in einen Vorprozessor einfügen), ist es schön, nur die gewünschten Zeichen in Ihrer XML-Datei zu haben, ohne sie mit XML-Tags / -Attributen zu verwechseln. Wie bei @paary erwähnt, können Sie auch häufig URLs einbetten, die kaufmännisches Und enthalten. Selbst wenn die Daten nur wenige Sonderzeichen enthalten, die Daten jedoch sehr, sehr lang sind (z. B. der Text eines Kapitels), ist es schön, dass Sie diese wenigen Entitäten beim Bearbeiten Ihrer XML-Datei nicht dekodieren müssen .
(Ich vermute, dass alle Vergleiche mit Kommentaren irgendwie irreführend / nicht hilfreich sind.)
quelle
Ich musste einmal CDATA verwenden, wenn mein XML-Element HTML-Code speichern musste. Etwas wie
CDATA bedeutet also, dass alle Zeichen ignoriert werden, die andernfalls als XML-Tag wie <und> usw. interpretiert werden könnten.
quelle
Die darin enthaltenen Daten werden nicht als XML analysiert und müssen daher kein gültiges XML sein oder können Elemente enthalten, die als XML erscheinen, dies jedoch nicht sind.
quelle
Aus Wikipedia:
Also: Text in CDATA wird vom Parser gesehen, aber nur als Zeichen, nicht als XML-Knoten.
quelle
Als weiteres Beispiel für seine Verwendung:
Wenn Sie einen RSS-Feed (XML-Dokument) haben und eine grundlegende HTML-Codierung in die Anzeige der Beschreibung aufnehmen möchten, können Sie diese mit CData codieren:
Der RSS-Reader zieht die Beschreibung ein und rendert den HTML-Code innerhalb der CDATA.
Hinweis - nicht alle HTML-Tags funktionieren - Ich denke, das hängt vom verwendeten RSS-Reader ab.
Und als Erklärung dafür, warum in diesem Beispiel CData verwendet werden (und nicht die entsprechenden Tags pubData und dc: creator): Dies ist für die Website-Anzeige mit einem RSS-Widget gedacht, für das wir keine wirkliche Formatierungssteuerung haben.
Auf diese Weise können wir die Höhe und Position des enthaltenen Bilds angeben, die Namen und das Datum des Autors korrekt formatieren usw., ohne dass ein neues Widget erforderlich ist. Es bedeutet auch, dass ich dies skripten kann und sie nicht von Hand hinzufügen muss.
quelle
CDATA steht für Character Data. Sie können dies verwenden, um einige Zeichen zu maskieren, die andernfalls als reguläres XML behandelt werden. Die darin enthaltenen Daten werden nicht analysiert. Wenn Sie beispielsweise eine darin enthaltene URL übergeben möchten
&
, können Sie dazu CDATA verwenden. Andernfalls wird eine Fehlermeldung angezeigt, da diese als reguläres XML analysiert wird.quelle
Es wird verwendet, um Daten zu enthalten, die andernfalls als XML angesehen werden könnten, da sie bestimmte Zeichen enthalten.
Auf diese Weise werden die darin enthaltenen Daten angezeigt, aber nicht interpretiert.
quelle
Es entgeht eine Zeichenfolge, die nicht wie gewohnt an XML übergeben werden kann:
Beispiel:
Die Zeichenfolge enthält "&".
Du kannst nicht:
Daher müssen Sie CDATA verwenden:
quelle
Wird normalerweise zum Einbetten von benutzerdefinierten Daten wie Bild- oder Audiodaten in ein XML-Dokument verwendet.
quelle
Die Cdata sind Daten, die Sie möglicherweise an einen XML-Parser übergeben möchten und die immer noch nicht als XML interpretiert werden.
Sagen Sie zum Beispiel: - Sie haben eine XML-Datei, die ein Frage- / Antwortobjekt enthält. Solche offenen Felder können Daten enthalten, die nicht ausschließlich unter den Basisdatentyp oder die in XML definierten benutzerdefinierten Datentypen fallen. Gefällt mir - Ist dies ein korrektes Tag für einen XML-Kommentar? - Möglicherweise müssen Sie es so übergeben, wie es ist, ohne vom XML-Parser als ein anderes untergeordnetes Element interpretiert zu werden. Hier kommt Cdata zu Ihrer Rettung. Wenn Sie als Cdata deklarieren, teilen Sie dem Parser mit, dass die umschlossenen Daten nicht als XML behandelt werden sollen (obwohl sie möglicherweise wie eine aussehen).
quelle
Notiere dass der
CDATA
Konstrukt nur benötigt wird, wenn Text direkt in die XML-Textdatei eingefügt wird.Das heißt, Sie müssen nur verwenden,
CDATA
wenn Sie den XML-Text direkt von Hand eingeben oder programmgesteuert erstellen.Jeder Text, der mit einer DOM-Prozessor-API oder SimpleXML eingegeben wird, wird automatisch maskiert, um zu verhindern, dass XML-Inhaltsregeln verletzt werden.
quelle