IE 9 :: 使用 Javascript 将 XML 代码显示到 Div 中

IE 9 :: Display XML code into a Div with Javascript

本文关键字:显示 Div 代码 使用 Javascript IE XML      更新时间:2023-09-26

我一直在尝试使用Javascript将我的XML代码显示到Div中,但在Internet Explorer中无法按如下方式工作:

$('footer #xml_content').val($parsed.find('poem').html());
$('div#explanation').html($parsed.find('explanation').html());

虽然它确实可以text()以下函数一起使用,但 XML 标记不会显示:

$('footer #xml_content').html($parsed.find('poem').text());
$('div#explanation').html($parsed.find('explanation').text());

谁能弄清楚这个谜题?谢谢!

function go_poem(pnum, poem, live, id_timer1, id_timer2, reset) { 
    $.ajax({ 
        type: "GET", 
        url: _list_poems[ parseInt(pnum)-1 ], 
        dataType: "xml", 
        success: function (xml) { 
            var $parsed = $(xml); 
            var $texto = $parsed.find("texto"); 
            $('footer #xml_content').html(
                document.createTextNode( $('poem').html() )
            );
            $('div#explanation').html(
                document.createTextNode( $('explanation').html() )
            );
/* Remainder of code not included */

如果您真的想将这些标签显示为文本,则必须使用 &lt;&gt; 转义所有<>

更新的答案

在聊天中与OP交谈后,我们确定了以下模式:

var box = $("<div></div>");
$("footer #xml_content").html(function () {
    box.html( $parsed.find("poema").clone() );
    return box.html();
});

由于权限限制,我们不得不将 XML 节点添加到临时节点,然后返回临时、未附加节点的 html。

原始答案

从 XML 创建textNode

document.createTextNode( $parsed.find('poem').html() );

但请注意,您的标记可能与您一开始编写的内容不完全一样。我创建了一个小提琴来演示这种方法,并在末尾包含一些无效标记以进行演示。

浏览器将尝试修复/重新排列元素和属性。因此,从$.fn.html检索的内容可能无法反映一开始提供给解析器的内容。

http://jsfiddle.net/jonathansampson/zvxj3yh4/