2010-12-10 1 views

Répondre

112

Vous pouvez inclure du contenu HTML. Une possibilité est de l'encoder dans BASE64 comme vous l'avez mentionné.

Un autre utilisateur pourrait utiliser les balises CDATA.

Exemple d'utilisation CDATA:

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

S'il vous plaît noter:

la séquence de caractères d'ouverture de CDATA: <![CDATA[

la séquence de caractères de fermeture de CDATA: ]]>

+6

+1 CDATA est bien meilleur OMI, car il garde les choses lisible par l'homme, et ne vient pas inévitable de base64 33% supplémentaires poids –

+2

rappelez-vous que XML et CDATA préservent l'espace blanc. – zzzzBov

+4

J'ai décidé d'utiliser BASE64, car il permettra d'enregistrer des données avec une précision de 100%, lorsque CDATA et l'échappement ajoutera des espaces supplémentaires si formaté. L'ajout de CDATA ajouterait également de la complexité et nécessiterait une sorte de pré-scan HTML, au cas où le HTML contiendrait un élément CDATA ... – newbie

7

Le but de base64 est de prendre données binaires et être en mesure de persister à une chaîne. Ce bénéfice a un coût, une augmentation de la taille du résultat (je pense que c'est un ratio de 4 à 3). Il y a deux solutions. Si vous savez que les données seront bien formées au format XML, incluez-les directement. L'autre, une meilleure option, est d'inclure le HTML dans une section CDATA au sein d'un élément au sein du XML.

17

Tant que votre contenu html ne doit pas contenir un élément CDATA, vous pouvez contenir le code HTML dans un élément CDATA, sinon vous devrez échapper les entités XML.

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

VS

<element>&lt;p&gt;your html here&lt;/p&gt;</element> 
Questions connexes