2010-12-10 39 views

Respuesta

112

Puede incluir contenido HTML. Una posibilidad es codificarlo en BASE64 como lo mencionó.

Otro podría estar utilizando las etiquetas CDATA.

Ejemplo usando CDATA:

<xml> 
    <title>Your HTML title</title> 
    <htmlData><![CDATA[<html> 
     <head> 
      <script/> 
     </head> 
     <body> 
     Your HTML's body 
     </body> 
     </html> 
    ]]> 
    </htmlData> 
</xml> 

Tenga en cuenta:

secuencia de caracteres de apertura de CDATA: <![CDATA[

secuencia de caracteres de cierre de CDATA: ]]>

+6

1 CDATA es mucho mejor de la OMI, ya que mantiene las cosas legible, y no viene con la base 64 de las inevitables 33% adicional peso –

+2

solo recuerde que XML y CDATA conservan el espacio en blanco. – zzzzBov

+4

Decidí usar BASE64, ya que guardará los datos con un 100% de precisión, cuando CDATA y escaping agregarán espacios en blanco adicionales si están formateados. Además, agregar CDATA agregaría complejidad adicional y requeriría algún tipo de preescaneo de HTML, en caso de que HTML contuviera elementos CDATA ... – newbie

7

El propósito de codificación BASE64 es tomar datos binarios y ser capaz de persistir en una cadena. Ese beneficio tiene un costo, un aumento en el tamaño del resultado (creo que es una proporción de 4 a 3). Hay dos soluciones. Si sabe que los datos estarán bien formados en XML, inclúyalo directamente. La otra, una mejor opción, es incluir el HTML en una sección CDATA dentro de un elemento dentro del XML.

17

siempre que su contenido html no necesite contener un elemento CDATA, puede contener el código HTML en un elemento CDATA; de lo contrario, deberá escapar de las entidades XML.

<element><![CDATA[<p>your html here</p>]]></element> 

VS

<element>&lt;p&gt;your html here&lt;/p&gt;</element> 
Cuestiones relacionadas