【问题标题】:Is it possible to insert HTML content in XML document?是否可以在 XML 文档中插入 HTML 内容?
【发布时间】:2010-12-10 19:11:16
【问题描述】:

我需要将 HTML 内容插入到 XML 文档中,这可能吗?或者 HTML 内容是否应该以例如 BASE64 或其他类似的方式编码?

【问题讨论】:

    标签: html xml


    【解决方案1】:

    您可以包含 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 的开始字符序列:&lt;![CDATA[

    CDATA 的结束字符序列:]]&gt;

    【讨论】:

    • +1 CDATA 在 IMO 方面要好得多,因为它使内容易于阅读,并且没有 base64 不可避免的 33% 额外重量
    • 请记住 XML 和 CDATA 保留空白。
    • 我决定使用 BASE64,因为它会以 100% 的准确率保存数据,当 CDATA 和转义会在格式化时添加额外的空白。此外,添加 CDATA 会增加额外的复杂性,并且需要某种预扫描 HTML,以防 HTML 包含 CDATA 元素...
    • 链接已过期。
    【解决方案2】:

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

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

    VS

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        请看这个。

        解析器将忽略 CDATA 部分中的文本。

        http://www.w3schools.com/xml/dom_cdatasection.asp

        这将帮助您了解有关 XML 的基础知识

        【讨论】:

          【解决方案5】:

          只需将带有内容的 html 标记放在其中,然后在等号之后添加带引号的 xmlns 属性,引号之间是 http://www.w3.org/1999/xhtml

          【讨论】:

            猜你喜欢
            • 2011-05-29
            • 2016-07-04
            • 1970-01-01
            • 2010-09-13
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多