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 に答える