使用 jQuery 添加 XML DOM 元素-可能吗?
我正在尝试使用 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>
I am trying to use jQuery to manipulate the DOM of an XML file I've loaded with ajax. I can select elements, empty them, and remove them, but not add them.
jQuery rarely lets me down, but I am feeling burnt out and defeated. Please help.
The code:
<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>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我认为您需要使用 $.parseXML(xml) 来解析 XML。 parseXML() 是 jQuery 1.5 的新增内容。我遇到了和你类似的问题,我最终使用了一些插件库来解析 XML,因为我使用的是 jQuery 1.4。
http://api.jquery.com/jQuery.parseXML/
====编辑= ===
使用 jQuery 操作 XML 有点棘手。尝试以下代码
您必须执行 $(dom).children(...) 因为 dom 是一个文档对象,您必须将其包装到 jQuery 中才能使用 jQuery 函数。
您必须执行
$(dom).children(0).append(...)
但不能执行$(dom).append()
因为 dom 引用了文档XML DOM 树的根。回想一下所有 DOM 的样子:因此,如果您执行
$(dom).append(..)
您实际上是在尝试追加到文档根,这是不允许的,因为文档根只能有一个元素子元素,即 xml 文档的根元素。同样,您执行
.append($(item).children(0))
因为您想要插入item
的根元素而不是item 的文档根
I think you will need to use $.parseXML(xml) to parse the XML. parseXML() was new addition to jQuery 1.5. I had similar problem as you, and I ended up using some plugin library to parse XML because I was using jQuery 1.4.
http://api.jquery.com/jQuery.parseXML/
==== Edit ====
It's a bit tricky to manipulate XML using jQuery. Try the following code
You have to do $(dom).children(...) because dom is a document object, you have to wrap it into jQuery in order to use jQuery functions.
You have to do
$(dom).children(0).append(...)
but not$(dom).append()
because dom refers to the document root of the XML DOM tree. recall all DOM looks like:So if you do
$(dom).append(..)
you are actually trying to append to the document root which is not allowed because document root can only have one element child, namely the root element of your xml document.Similarly, you do
.append($(item).children(0))
because you want to insert the root element ofitem
not the document root ofitem
由于跨域ajax问题,函数parseResultsXML永远不会被调用,http: //www.w3schools.com/xml/note.xml 与您的页面位于不同的域中。
而是将 xml 文件复制到您的站点,然后将代码更改为:
The function parseResultsXML will never be called because of cross domain ajax issues, http://www.w3schools.com/xml/note.xml is in different domain than your page.
Instead copy the xml file to your site and then change the code to: