2010-12-10 10 views

risposta

112

È possibile includere contenuto HTML. Una possibilità è la codifica in BASE64 come hai menzionato.

Un altro potrebbe utilizzare i tag CDATA.

Esempio con CDATA:

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

Nota:

sequenza di caratteri apertura di CDATA: <![CDATA[

sequenza di caratteri di chiusura di CDATA: ]]>

+6

+1 CDATA è il modo migliore IMO perché mantiene le cose leggibile, e non arriva con inevitabili 33% delle Base64 aggiuntivo peso –

+2

ricorda che XML e CDATA preservano lo spazio bianco. – zzzzBov

+4

Ho deciso di utilizzare BASE64, perché consente di salvare i dati con una precisione del 100%, quando CDATA e l'escaping aggiungeranno spazi bianchi extra se formattati. Inoltre l'aggiunta di CDATA aggiungerebbe ulteriore complessità e richiederebbe una sorta di prescansione HTML, nel caso in cui l'HTML contenesse l'elemento CDATA ... – newbie

7

Lo scopo della codifica base64 è prendere dati binari ed essere in grado di persistere in una stringa. Questo vantaggio ha un costo, un aumento delle dimensioni del risultato (penso che sia un rapporto 4: 3). Ci sono due soluzioni. Se sai che i dati saranno ben formati XML, includilo direttamente. L'altra, un'opzione migliore, è quella di includere l'HTML in una sezione CDATA all'interno di un elemento all'interno dell'XML.

17

fino a quando il contenuto HTML non deve contenere un elemento CDATA, è possibile contenere l'HTML in un elemento CDATA, altrimenti sarà necessario sfuggire alle entità XML.

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

VS

<element>&lt;p&gt;your html here&lt;/p&gt;</element> 
Problemi correlati