jquery - 使用 jQuery 添加 XML DOM 元素-可能吗?

标签 jquery xml ajax xmldom

我正在尝试使用 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>

最佳答案

我认为您需要使用 $.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 的根元素而不是 项目

关于jquery - 使用 jQuery 添加 XML DOM 元素-可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6513953/

相关文章:

php - 使用 jQuery : Is 'https' enough to secure the XML? 从 PHP webservice 调用解析 XML

java - 如何获取属性值?(javax.xml.bind.annotation)

java - AndroidManifest.xml - 指定的属性 'manifest' 不存在

javascript - 为什么 jQuery 的 Promise.reject 不起作用?

javascript - 从 Ajax 到 Php 传递和处理 2D 数组

javascript - 在循环内重复进行 ajax 调用,直到满足条件

jQuery .mouseenter 不适用于绝对定位。

javascript - 切换 block 的显示

javascript - jQuery - 根据已克隆行的表单内的另一个选择将下拉列表更改为多选

javascript - 聊天应用程序轮询