是否可以在XML文档中插入HTML内容?

new*_*bie 67 html xml

我需要将HTML内容插入到XML文档中,这是可能的,还是应该将HTML内容编码为BASE64或其他类似内容?

Pab*_*ruz 128

您可以包含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>
Run Code Online (Sandbox Code Playgroud)

请注意:

CDATA的开场角色序列: <![CDATA[

CDATA的结束字符序列: ]]>

  • +1 CDATA是更好的IMO,因为它保持人类可读的东西,并没有带来base64不可避免的33%额外的重量 (7认同)
  • 我决定使用BASE64,因为它将以100%的准确度保存数据,当CDATA和转义将添加额外的空格(如果格式化).另外添加CDATA会增加额外的复杂性,并且需要某种预扫描HTML,以防HTML包含CDATA元素... (5认同)
  • 请记住,XML和CDATA保留了空白区域. (3认同)

zzz*_*Bov 21

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

<element><![CDATA[<p>your html here</p>]]></element>
Run Code Online (Sandbox Code Playgroud)

VS

<element>&lt;p&gt;your html here&lt;/p&gt;</element>
Run Code Online (Sandbox Code Playgroud)


Ric*_*ich 8

BASE64编码的目的是获取二进制数据并能够将其持久化为字符串.这个好处是有代价的,结果的大小增加(我认为它是4比3的比例).有两种解决方案.如果您知道数据将是格式良好的XML,请直接包含它.另一个更好的选择是将HTML包含在XML中元素的CDATA部分中.