使用JQuery将XML数据转换为单个变量

使用JQuery将XML数据转换为单个变量,jquery,xml,Jquery,Xml,假设您有一个data.xml文件: <?xml version="1.0" encoding="UTF-8" ?> <root> <item>value1</item> <item>value2</item> <item>value3</item> </root> 如果我刷新页面,我会得到一个带有URL、baseURI、body等字段的文档对象 如果我再次刷新,我

假设您有一个data.xml文件:

<?xml version="1.0" encoding="UTF-8" ?>
<root>
    <item>value1</item>
    <item>value2</item>
    <item>value3</item>
</root>
如果我刷新页面,我会得到一个带有URL、baseURI、body等字段的文档对象

如果我再次刷新,我将得到一个文档对象,其中包含data.xml中的数据:

<root>
    <item>value1</item>
    <item>value2</item>
    <item>value3</item>
</root>
但两者都给了我错误

也许有更好的方法可以做到这一点,这意味着将xml数据读入单个变量


有什么建议吗?

您可以通过以下方式选择xml标记:

success: function(data) {
    parser(data);
}

function parser(data) {
 ...
}

您将在ajax请求完成之前返回结果。 您必须等待ajax返回,然后调用回调函数:

$(document).ready(function() {
        'use strict';
        jQuery.extend({
            getValues: function(url, callback) {
            var result = null;
            $.ajax({
                url: url,
                type: 'get',
                dataType: 'xml',
                async: false,
                success: function(data) {
                    callback.call(this, data);
                }
            });
            }
        });

        $.getValues("data.xml",function(data){
             console.log(data);
        });

});

但我想在返回xml后,在ajax成功函数之外选择xml标记。@rfc1484您可以创建一个函数并将ajax数据传递给它。您是对的,但为了使其工作,我必须删除async属性。现在我只需要知道如何从数据变量访问元素。@rfc1484哦,我错过了异步选项。因为您的数据是xml,所以可以使用常规jquery访问元素:var xml=$data;例如xml.find'someelement.attr'someattribute';
success: function(data) {
    parser(data);
}

function parser(data) {
 ...
}
$(document).ready(function() {
        'use strict';
        jQuery.extend({
            getValues: function(url, callback) {
            var result = null;
            $.ajax({
                url: url,
                type: 'get',
                dataType: 'xml',
                async: false,
                success: function(data) {
                    callback.call(this, data);
                }
            });
            }
        });

        $.getValues("data.xml",function(data){
             console.log(data);
        });

});