获取XML数据 - Jquery - 过滤器

时间:2017-12-04 08:57:55

标签: jquery xml filter

我正在尝试使用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.");
        }
    });
});

我的目标是根据传入的数据属性获取节点值。 非常感谢所有帮助! :) 谢谢!!

1 个答案:

答案 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)返回了一个空对象,因为数据内部没有包含其他数据标记(如果我理解错误)。