【问题标题】:CDATA not rendering tagsCDATA 不呈现标签
【发布时间】:2011-09-15 19:04:49
【问题描述】:

我正在尝试在网页上显示与纯文本混合的 XML 标记。我从一个从数据库中获取数据的 python 脚本执行此操作。我已将我的问题简化为下面的程序。

#!/usr/local/bin/python
print """Content-type: text/html;charset=utf-8\n\n"""
print """<html><body>
start:<![CDATA[This is the <xml> tag </xml>.]]>:end
</body></html>"""

我希望它显示以下内容:

start:This is the <xml> tag </xml>.:end

在 IE8 和 Chrome15 中,它显示以下内容:

start: tag .]]>:end

当我在 IE 中查看页面的 HTML 源代码时,我可以看到以下内容:

<html><body>
start:<![CDATA[This is the <xml> tagxml.]]>:end
</body></html>

在 Chrome 中,我在查看源代码时看到了相同的结果,但 &lt;![CDATA[This is the &lt;xml&gt; 部分似乎是绿色的,因为它被视为评论。

我特别想保留文本(而不是将&amp;lt; 转换为&amp;lt;),因为我通过javascript 访问元素,允许人们在单独的文本区域中编辑它们。转换它们然后将它们保存转换,导致在处理过程中进一步出现问题。我可以在保存之前将它们转换回来,但这似乎是错误的方法。

知道我做错了什么吗?

提前致谢, 授予

【问题讨论】:

    标签: html python


    【解决方案1】:

    CDATA 是 XML 的一部分,而不是 HTML,因此浏览器会忽略它,然后像对待任何其他标签一样对待其中的任何标签 - 忽略它无法识别的标签,并注意它识别的标签。

    我认为除了使用&amp;lt;等并在编辑时转换为标签并在保存时转换回来之外别无选择。

    【讨论】:

    • 谢谢,我想我得试试看。
    【解决方案2】:
    <!DOCTYPE html>
    <html>
        <body>
            <div id="div1">&lt;b&gt;hi&lt;/b&gt;</div>
            <textarea id="area"></textarea>
            <script type="text/javascript">
                var div1 = document.getElementById('div1')
                var area = document.getElementById('area')
                var text = div1.firstChild.nodeValue
                area.value = text
            </script>
        </body>
    </html>
    

    问题出在哪里?

    【讨论】:

    • 谢谢。我试了一下,一开始似乎奏效了。然而,我使用了 innerHTML 而不是 firstChild.nodeValue,因为可能有多个文本节点(在我的 td 内)。 innerHTML 似乎不起作用,但 innerTEXT 起作用(尽管我不确定它的支持范围有多广)。
    • @grantstead innerText 是一个旧的 IE 属性,但有一个标准的 - textContent,所以e.textContent || e.innerText || ''
    猜你喜欢
    • 2014-10-14
    • 2021-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-22
    • 2010-09-20
    • 1970-01-01
    相关资源
    最近更新 更多