【问题标题】:What is the Proper Escape Formatting for HTML and CSS Within an XML Document?XML 文档中 HTML 和 CSS 的正确转义格式是什么?
【发布时间】:2010-01-26 04:29:10
【问题描述】:

我有一个 XML 数据源,其中一个文档节点中包含 HTML 和 CSS 格式的数据。转义这些数据以便我可以正确解析它的正确方法是什么?为了澄清起见,我在 Objective-C 中使用 TouchXML 来解析数据。 (没关系,但我想包括所有相关信息。)

任何帮助将不胜感激。谢谢!

L.

【问题讨论】:

    标签: css objective-c xml cdata touchxml


    【解决方案1】:

    我假设您的 XML 数据将包含包含 HTML 标记的节点,而不是 XHTML 和 XML 数据在您的文档中交织在一起的混合体。

    在这种情况下,我通常更喜欢将CDATA blocks 用于 HTML 数据。这允许您放置您想要的任何 HTML。尝试将 HTML 添加为 XML 文档中的常规节点可能会导致问题,因为它并不总是 100% 兼容 XML,并且需要定义字符实体才能被 XML 正确识别解析器。

    <xmlNode>
    <![CDATA[
    
    <Any>
        <Html>
            <Tags>
                <You>
                    <Want />
                </You>
            </Tags>
        </Html>
    </Any>
    
    ]]>
    <xmlNode>
    

    【讨论】:

    • 请注意,字符串 "]]>" 可能会出现在 HTML 和 CSS 中,因此您需要注意不要意外终止您的 CDATA 块。您可以通过将 "]]>" 替换为 "]]]]>" 来做到这一点(即:在序列的中途结束 CDATA 块,然后开始一个新的块)。另一种方法是使用 &-escaping 而不是 CDATA 块。无论您使用 CDATA 块还是 &-转义,它们在您的 XML 解析器中看起来都是一样的。
    • @Laurence,虽然您的观点是有效的,但字符串 "]]>" 出现的可能性不大,因为 CDATA 在 HTML 中并不常见(据我所知)而且很少见包含未转义的序列以在浏览器中显示为常规输出。不过,显然应该考虑到这一点。
    • 假设我已经看到很多代码采用手动方式进行转义,但后来在“不太可能”最终实际发生时被它咬了。
    • 你们都给了我我需要的信息。我将尝试将我的 HTML 封装在 "
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-20
    • 2011-07-06
    • 1970-01-01
    • 2014-01-20
    • 1970-01-01
    相关资源
    最近更新 更多