我正在尝试使用jQuery来操作我用ajax加载的XML文件的DOM。我可以选择元素,清空它们并删除它们,但不能添加它们。
jQuery很少让我失望,但我感到被烧毁并被击败。请帮忙。
代码:
<script type="text/javascript">
$.ajax({
type: "GET",
url: "note.xml",
dataType: "xml",
success: parseResultsXML
});
function parseResultsXML(xml) {
$(xml).append('<item>something</item>'); // Nothing gets added! :(
}
</script>
答案 0 :(得分:3)
我认为你需要使用$ .parseXML(xml)来解析XML。 parseXML()是jQuery 1.5的新增功能。我遇到了类似的问题,最后我使用了一些插件库来解析XML,因为我使用的是jQuery 1.4。
http://api.jquery.com/jQuery.parseXML/
====编辑====
使用jQuery操作XML有点棘手。请尝试以下代码
var dom = $.parseXML(xml); //returns DOM element
var item = $.parseXML("<item>something</item>"); //returns DOM element
$(dom).children(0).append($(item).children(0))
console.log($(dom).find("item").text()); //should print "something"
你必须做$(dom).children(...)因为dom是一个文档对象,你必须将它包装到jQuery中才能使用jQuery函数。
您必须执行$(dom).children(0).append(...)
而不是$(dom).append()
,因为dom指的是XML DOM树的文档根目录。回想一下所有DOM看起来像:
Document
|
root
/ | \
c1 c2 c3 ....more children...
因此,如果你执行$(dom).append(..)
,你实际上是在尝试附加到不允许的文档根目录,因为文档根目录只能有一个子元素,即xml文档的根元素。
同样,您执行.append($(item).children(0))
因为要插入item
的根元素而不是item
的文档根
答案 1 :(得分:0)
由于跨域ajax 问题,永远不会调用函数parseResultsXML,http://www.w3schools.com/xml/note.xml与您的网页位于不同的域中。
而是将xml文件复制到您的站点,然后将代码更改为:
$.ajax({
type: "GET",
url: "/note.xml",
dataType: "xml",
success: parseResultsXML
});