使用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 });