0

我正在尝试从客户端的 XML 字符串加载数据。XML 阅读器没有从 xml 字符串中获取数据。这是代码

  Ext.define('User', {    extend: 'Ext.data.Model',
    fields: ['firstname', 'lastname', 'phone']
});

var storeT =  Ext.create('Ext.data.Store', {    model: 'User',
    data:  '<users><user><firstname>Jack</firstname><lastname>Jobs</lastname><phone>1234567890</phone></user></users>', 
    autoLoad: true,
    proxy: {
        type: 'memory',
        reader: {
            type: 'xml',
            root: 'users',                            
            }    
    }
});

var user = storeT.first();
console.log("First Name " + user.get('firstname') );

StoreT 没有记录。任何提示为什么它无法获取数据?

提前致谢。

4

2 回答 2

2

XmlReader 的record配置是必需的。尝试将此添加到您的阅读器配置中:

    record: 'user'
于 2013-03-06T05:41:11.397 回答
0

感谢 bmoeskau 和 Evan,我可以在您的帮助下解决这个问题。这是工作代码:我添加了一个函数来获取 XMLDoc..

function GetXMLDoc()     {  

         var xmlstring1 = "<users>" +
        "<user><firstname>Jack</firstname><lastname>Jobs</lastname><phone>1234567890</phone></user>" +
        "</users>"  ;  

        var doc;
        if(window.ActiveXObject){
          doc = new ActiveXObject("Microsoft.XMLDOM");
          doc.async = "false";
          doc.loadXML(xmlstring1);
        }else{
          doc = new DOMParser().parseFromString(xmlstring1,"text/xml");
        }

        console.log("xml", xmlstring1); 
        return doc;

  }

将阅读器更改如下:

    var storeT =  Ext.create('Ext.data.Store', {
        model: 'MyUser',
        data:  GetXMLDoc(), 
        autoLoad: true,
        proxy: {
            type: 'memory',
            reader: {
            type: 'xml',
            root: 'users',
            record: 'user',                     
            }
        }
    }); 


    var user = storeT.first();
    console.log("First Name " + user.get('firstname') );

谢谢..

于 2013-03-06T19:17:18.910 回答