Ext JS 4:从XML字符串中读取数据

时间:2013-03-06 03:13:33

标签: javascript extjs xml-parsing

我正在尝试从客户端加载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没有记录。任何提示无法获取数据的提示?

提前致谢。

2 个答案:

答案 0 :(得分:2)

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

    record: 'user'

答案 1 :(得分: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') );

谢谢..