CDATA significa Datos de caracteres y significa que los datos entre estas cadenas incluyen datos que podrían interpretarse como marcado XML, pero no deberían serlo.
Las diferencias clave entre CDATA y los comentarios son:
Esto significa dados estos cuatro fragmentos de XML de un documento bien formado:
<!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>
]]
y el>
- vea esta respuesta para ver cómo y por qué.if (a[b[c]]>10) { }
.Una sección CDATA es " una sección del contenido del elemento que está marcado para que el analizador lo interprete solo como datos de caracteres, no marcado " .
Sintácticamente, se comporta de manera similar a un comentario:
... pero todavía es parte del documento:
Intente guardar lo siguiente como un
.xhtml
archivo ( no.html
) y ábralo usando FireFox ( no Internet Explorer ) para ver la diferencia entre el comentario y la sección CDATA; el comentario no aparecerá cuando mire el documento en un navegador, mientras que la sección CDATA:Algo a tener en cuenta con las secciones CDATA es que no tienen codificación, por lo que no hay forma de incluir la cadena
]]>
en ellas. Cualquier dato de carácter que contenga]]>
tendrá que, hasta donde yo sé, ser un nodo de texto. Del mismo modo, desde una perspectiva de manipulación DOM, no puede crear una sección CDATA que incluya]]>
:Este código de manipulación DOM arrojará una excepción (en Firefox) o dará como resultado un documento XML mal estructurado: http://jsfiddle.net/9NNHA/
fuente
Un gran caso de uso: su xml incluye un programa, como datos (por ejemplo, un tutorial de página web para Java). En esa situación, sus datos incluyen una gran cantidad de caracteres que incluyen '&' y '<' pero esos caracteres no están destinados a ser xml.
Comparar:
con
Especialmente si está copiando / pegando este código desde un archivo (o incluyéndolo en un preprocesador), es bueno tener los caracteres que desea en su archivo xml, sin confundirlos con etiquetas / atributos XML. Como @paary mencionó, otros usos comunes incluyen cuando se incrustan URL que contienen símbolos de unión. Finalmente, incluso si los datos solo contienen unos pocos caracteres especiales, pero los datos son muy largos (el texto de un capítulo, por ejemplo), es bueno no tener que codificar esas pocas entidades a medida que edita su archivo xml. .
(Sospecho que todas las comparaciones con los comentarios son un poco engañosas / inútiles).
fuente
Una vez tuve que usar CDATA cuando mi elemento xml necesitaba almacenar código HTML. Algo como
Entonces, CDATA significa que ignorará cualquier carácter que de otro modo podría interpretarse como una etiqueta XML como <y> etc.
fuente
Los datos que contiene no se analizarán como XML y, como tal, no es necesario que sea un XML válido o puede contener elementos que pueden parecer XML pero no lo son.
fuente
De Wikipedia:
Por lo tanto: el analizador ve el texto dentro de CDATA pero solo como caracteres, no como nodos XML.
fuente
Como otro ejemplo de su uso:
Si tiene una fuente RSS (documento xml) y desea incluir una codificación HTML básica en la visualización de la descripción, puede usar CData para codificarla:
El lector RSS extrae la descripción y procesa el HTML dentro del CDATA.
Nota: no todas las etiquetas HTML funcionan. Creo que depende del lector RSS que esté utilizando.
Y como explicación de por qué este ejemplo usa CData (y no las etiquetas apropiadas de pubData y dc: creator): esto es para la visualización del sitio web usando un widget RSS para el que no tenemos un control de formato real.
Esto nos permite especificar la altura y la posición de la imagen incluida, formatear los nombres y la fecha del autor correctamente, y así sucesivamente, sin la necesidad de un nuevo widget. También significa que puedo escribir esto y no tener que agregarlos a mano.
fuente
CDATA significa Datos de caracteres. Puede usar esto para escapar de algunos caracteres que de lo contrario se tratarán como XML normal. Los datos dentro de este no serán analizados. Por ejemplo, si desea pasar una URL que contiene
&
, puede usar CDATA para hacerlo. De lo contrario, recibirá un error, ya que se analizará como XML normal.fuente
Se utiliza para contener datos que de otro modo podrían verse como xml porque contiene ciertos caracteres.
De esta manera, los datos en el interior se mostrarán, pero no se interpretarán.
fuente
Se escapa de una cadena que no se puede pasar a XML como de costumbre:
Ejemplo:
La cadena contiene "&" en ella.
No se puede:
Por lo tanto, debe usar CDATA:
fuente
Generalmente se usa para incrustar datos personalizados, como imágenes o datos de sonido dentro de un documento XML.
fuente
El Cdata es un dato que puede pasar a un analizador xml y que aún no se interpreta como un xml.
Digamos, por ejemplo: - Tiene un xml que tiene un objeto de pregunta / respuesta encapsulado. Dichos campos abiertos pueden tener cualquier información que no pertenezca estrictamente al tipo de datos básicos o los tipos de datos personalizados definidos por XML. Me gusta: ¿es esta una etiqueta correcta para el comentario xml? Es posible que deba pasarlo tal como está sin que el analizador xml lo interprete como otro elemento secundario. Aquí Cdata viene a tu rescate. Al declarar como Cdata, le está diciendo al analizador que no trate los datos empaquetados como un xml (aunque puede parecer uno)
fuente
Tenga en cuenta que la
CDATA
construcción solo es necesaria si coloca texto directamente en el archivo de texto XML.Es decir, solo necesita usarlo
CDATA
si escribe a mano o crea directamente el texto XML mediante programación.Cualquier texto ingresado usando una API de procesador DOM o SimpleXML se escapará automáticamente para evitar la ejecución de reglas de contenido XML.
fuente