使用jQuery添加XML DOM元素 – 是否可能?
我正在尝试使用jQuery来操作我用ajax加载的XML文件的DOM。 我可以选择元素,清空它们并删除它们,但不能添加它们。
jQuery很少让我失望,但我感到被烧毁并被击败。 请帮忙。
代码:
$.ajax({ type: "GET", url: "note.xml", dataType: "xml", success: parseResultsXML }); function parseResultsXML(xml) { $(xml).append('something'); // Nothing gets added! :( }
我想你需要使用$ .parseXML(xml)来解析XML。 parseXML()是jQuery 1.5的新增function。 我遇到了类似的问题,最后我使用了一些插件库来解析XML,因为我使用的是jQuery 1.4。
http://api.jquery.com/jQuery.parseXML/
====编辑====
使用jQuery操作XML有点棘手。 请尝试以下代码
var dom = $.parseXML(xml); //returns DOM element var item = $.parseXML("- something
"); //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
的文档根目录
由于跨域ajax问题,函数parseResultsXML永远不会被调用, http://www.w3schools.com/xml/note.xml与您的页面位于不同的域中。
而是将xml文件复制到您的站点,然后将代码更改为:
$.ajax({ type: "GET", url: "/note.xml", dataType: "xml", success: parseResultsXML });