我想用jquery在xml中删除一些节点或添加一些节点,
我尝试使用 append
、empty
、remove
但它们似乎都不起作用,
像(在 $.ajax 中):
success:function(xml){
$(xml).find("layout").append('<app id="' + $children.eq(i).attr("id") + '"></app>');
$(xml).find("layout").empty();
}
我也发现谷歌上没有教程。 所以我想知道是否可以使用 jquery 在 xml 中添加或删除节点?
OK,我写的很详细,xml文件只是在本地保存为Database/UserConfig/config.xml 这是我的Ajax 代码:
function layout_change()
{
var $children=$input.children();
$.ajax({
type: "get",
url: "Database/UserConfig/config.xml",
dataType: "xml",
timeout: 2000,
beforesend:function(xml){
$(xml).find("layout").empty();
},
success:function(xml){
for(var i=0;i<$children.length;i++)
{
$(xml).find("layout").append('<app id="' + $children.eq(i).attr("id") + '"></app>');
}
},
error:function(){}
});
}
还是可以用javascript来完成?还是只能用C#之类的服务器语言来完成?……
这是我的演示xml:
<layout>
<app id="id-4"></app>
<app id="id-5"></app>
<app id="id-6"></app>
<app id="id-1"></app>
<app id="id-2"></app>
<app id="id-3"></app>
</layout>
最佳答案
jQuery 是在 javascript 中解析和操作 XML 的绝佳工具。事实上,jQuery 的 ajax API 在构建时就考虑到了这一点,这就是为什么您可以通过将 dataType
参数设置为 xml
来指定 ajax 调用的响应类型的原因(尽管如果省略此参数,他们确实会尝试进行一些自动检测)。来自 dataType
参数的 jQuery $.ajax()
文档:
"xml": Returns a XML document that can be processed via jQuery.
您可以使用 jQuery 尽可能多地解析和操作 XML。我必须补充一点,与服务器端 XML 库中的 XPath 查询相比,使用 CSS 选择器非常棒。
虽然 empty
和 remove
按预期工作,但在使用 append
等函数动态添加节点时会遇到问题:jQuery,不管怎样原因(我还没有真正深入研究),在附加到 XML 结构时不会为您创建元素(尽管这在 HTML 结构中工作正常)。您可以通过显式自己将节点创建为 DOM 元素或 jQuery 对象然后调用 append
来轻松解决此问题:
//Either of these will work
var elem = document.createElement('app');
xml.find('layout').append(elem); // Appends <app></app> to <layout>
xml.find('layout').append($('<app>')); // Does the same
// You can also you use other manipulation functions such as `attr`
xml.find('layout').append($('<app>').attr('id', 'ego'));
但是,您的代码似乎存在其他问题,这些问题会阻止它按预期运行。例如,$.ajax
beforeSend
回调将 XMLHttpRequest
对象传递给回调函数,而不是要操作的 XML 对象。结果是该回调中的 empty
调用不执行任何操作。
此外,如果您试图在 beforeSend
回调中操作 Database/UserConfig/config.xml
的响应,它可能还不存在,因为beforeSend
在 ajax 请求被触发之前被调用。您打算传入的 xml
参数可能在全局范围内,但它在回调的范围内被压缩,因为 jQuery 正在传入 XMLHttpRequest
,正如我之前提到的。
关于jquery - 是否可以使用 jquery $.ajax 添加、删除 xml 节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4262960/