如何使用ajax获取Xml数据

时间:2017-05-10 13:45:11

标签: javascript ajax xml extjs

我试图通过使用ajax调用获取我的xml数据。但我只在我的result.responseXML中获得ROOT节点值数据。无法访问ITEM标记数据。

我的XML。

<ROOT UN="ABC" Total="28">
    <ITEM Val = "1" data = "name1" />
    <ITEM Val = "2" data = "name2" />
    <ITEM Val = "3" data = "name3" />
    <ITEM Val = "4" data = "name4" />
    <ITEM Val = "5" data = "name5" />
</ROOT>

这是我正在尝试的。

Ext.Ajax.request({
        url : url,
        method: 'GET',
        success: function ( result, request )
            { 
               debugger;
                result.responseXML
            }
    });

在responseXML中,我收到<ROOT UN="ABC" Total="28" ></ROOT>

任何人都能帮我解决我做错了什么以及如何纠正错误。如何获得Item标签。

1 个答案:

答案 0 :(得分:3)

在Ext js中,读取xml数据的最佳方法是使用商店。

  1. 创建商店并定义字段(映射属性(@Val)用于表示这是属性而不是子元素);
  2. 使用ajax代理加载数据;
  3. 使用xml阅读器读取数据。在Ext js 6中,您可以定义根元素的名称和要获取的元素的名称;
  4. 加载商店并在控制台中显示第一个元素的值。
  5. var itemStore = Ext.create('Ext.data.Store', {
        fields: [{name: 'val', mapping: '@Val'}, 
            {name: 'data', mapping: '@data'}],
        proxy: {
            type: 'ajax',
            url: 'data1.xml',
            method: 'GET',
            reader: {
                type: 'xml',
                record: 'ITEM',
                rootProperty: 'ROOT'
            }
        }
    });
    
    itemStore.load(function(records, operation, success) {
        var item1 = itemStore.first();
        console.log("First item " + item1.get('val'));
    });
    

    点击此处的小提琴:https://fiddle.sencha.com/#view/editor&fiddle/1vd6