2010-12-10 132 views

回答

112

您可以包含HTML内容。正如你所提到的,一种可能性是将它编码到BASE64中。

另一个可能使用CDATA标签。

实施例使用CDATA

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

请注意:

CDATA的开口字符序列:<![CDATA[

CDATA收盘字符序列:]]>

+6

+1 CDATA是更好的方式国际海事组织,因为它让事情人类可读,并且不使用Base64的不可避免的33%的额外重量 – 2010-12-10 19:15:24

+2

只记得XML和CDATA保留空格。 – zzzzBov 2010-12-10 19:18:15

+4

我决定使用BASE64,因为它将以100%的精度保存数据,当CDATA和转义格式化时会添加额外的空格。另外添加CDATA会增加额外的复杂性,并且需要某种预扫描HTML,以防HTML包含CDATA元素... – newbie 2011-10-25 06:49:51

7

BASE64编码的目的是采取二进制数据,并能够将其保存到一个字符串。这种好处需要付出代价,结果会增加(我认为这是一个4比3的比例)。有两种解决方案。如果你知道这些数据是格式良好的XML,请直接包含它。另一种更好的选择是将HTML包含在XML中元素的CDATA部分中。

17

只要您的html内容不需要包含CDATA元素,就可以在HTML元素中包含CDATA元素,否则您必须转义XML实体。

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

VS

<element>&lt;p&gt;your html here&lt;/p&gt;</element> 
相关问题