如何将XML元素插入到浏览器DOM中

时间:2011-09-15 22:01:54

标签: jquery xml

我正在使用jQuery Ajax从服务器检索XML文档,然后我想将其转换为HTML并注入浏览器DOM。我正在使用dataType:'xml'检索它,因此它被包装为XML文档而不是HTML。这允许我在插入之前进行我想要的操作。

但是,我找不到将操作的xml插入DOM的方法:

$('#myContainer').append(myXML)

在IE中导致安全违规,并且在Firefox中没有效果,而

$('#myContainer').append(myXML[0].xml)

适用于IE但不适用于Firefox(xml属性似乎是非标准的)

myXML.text()仅返回XML中的文本节点,而不返回标记,而myXML.html()返回null。

我也尝试将其作为文本检索,这允许我创建一个“标准”jQuery对象,它插入就好了。但是,我有以下几种情况:

<div><input type='checkbox'><otherElement/></input></div>

并希望根据input的内容修改otherElement元素。如果我将原始xml恢复为文本,jQuery会将其缩小为

<div><input type='checkbox'><otherElement/></div>

因此otherElement的父元素是div而不是input,因此输入元素的操作不可靠。如果我将其检索为html,也会出现同样的情况。

任何建议都非常感谢。

2 个答案:

答案 0 :(得分:2)

解决方案是使用'dataType':'text'加载它,然后使用$ parseXML创建jQuery对象。这样可以保留标记,并且可以将结果对象中的节点插入到DOM中。

答案 1 :(得分:0)

我会将其作为html进行检索,操作它,然后将其附加到DOM:

<script type="text/javascript">
$.ajax({"url":"/ajax.whatever",
        "dataType":"html",
        "success":function(data) {
           var html = $(data);
           // modify html as a jquery object
           // ...
           $("#myContainer").append(html);
        }
}    );
</script>