我正在尝试使用jquery过滤器函数并解析XML但是遇到了问题。 我的XML看起来像这样:
<root>
<data name="0121C395-AFCE-49C8-A163-55E24325D691" xml:space="preserve">
<value>Report an incident</value>
</data>
<data name="0121C395-AFCE-49C8-A163-55E24325D691_descr" xml:space="preserve">
<value>In this service it's possible to report incidents.</value>
</data>
<data name="0121C395-AFCE-49C8-A163-55E24325D691_short" xml:space="preserve">
<value>Report Incident</value>
</data>
</root>
我的Jquery看起来像这样:
$(document).ready(function(){
$.ajax({
type: "GET",
url: "http://localhost/servicemarket/ReachOut/Services.xml",
dataType: "xml",
success: function(xml){
var dataVal = $(xml).find('data').filter(function(){
return $('data', this).attr('name') == '0121C395-AFCE-49C8-A163-55E24325D691';
});
dataVal.each(function(index, data){
console.log($(data).find('value').text());
});
},
error: function() {
alert("An error occurred while processing XML file.");
}
});
});
我的目标是根据传入的数据属性获取节点值。 非常感谢所有帮助! :) 谢谢!!
答案 0 :(得分:0)
您的代码应略有修改:
$(document).ready(function(){
$.ajax({
type: "GET",
url: "http://localhost/servicemarket/ReachOut/Services.xml"
dataType: "xml",
success: function(xml){
var dataVal = $(xml).find('data').filter(function(){
return $(this).attr('name') == '0121C395-AFCE-49C8-A163-55E24325D691';
});
//console.log(dataVal);
dataVal.each(function(index, data){
console.log($(data).find('value').text());
});
},
error: function() {
alert("An error occurred while processing XML file.");
}
});
});
因此,使用$(this)
获取当前(由find()找到)对象。您的$('data', this)
返回了一个空对象,因为数据内部没有包含其他数据标记(如果我理解错误)。