4

ネストされた XML を使用し、'hasMany' を使用して解析しています。誰かがノード '< type >'の値を読み取る方法を教えていただければ幸いです。マッピングを使用して '' の属性 'id' & 'val' を簡単に読み取ることができますが、ノード値も読み取りたいと考えています。257411 in < type id="3" val="0">257411 誰かが適切な「マッピング」を提供できれば幸いです

XML データ:

<?xml version="1.0" encoding="ISO-8859-1"?>
<basics id="744" name="social">
      <number>302221</number>
      <types>
             <type id="3" val="0">257411</type>
             <type id="2" val="1081337">28213</type>
             <type id="1" val="263258">8645</type>
             <type id="5" val="0">3664</type>
             <type id="4" val="0">2246</type>
             <type id="9" val="0">1124</type>
            <type id="10" val="0">918</type>
      </types>
</basics>

model Basic Ext.define("ap3.model.Basic",{ extends: "Ext.data.Model",

config: {
    fields: [
             {name: 'id', mapping: '@id'},
             {name: 'name', mapping: '@name'},

             {name: 'number', mapping: 'number'}
             ],


             associations: [
                {
                    type: 'hasMany',
                    model: 'apv3.model.Type',
                    associationKey: 'types'
                }]
}

});

モデルタイプ Ext.define("ap3.model.Type",{ extends: "Ext.data.Model",

config: {
    fields: [
             {name: 'id', mapping: '@id'},
             {name: 'val', mapping: '@val'},
             {name: 'type', mapping: 'type'}

             ],

             proxy: {
         type: 'memory',
         reader: {
                type: 'xml',
                record: 'type'
            }
    }
}

});

4

2 に答える 2

1

「マッピング」も関数を受け入れます:

{name: 'id', mapping: '@id'},
{name: 'name', mapping: '@name'},
{name: 'number', mapping:  function (node) {
    return (node.firstChild ? node.firstChild.nodeValue : null);
}}
于 2013-06-28T12:01:58.000 に答える
0

それが答えとして数えられるかどうかはわかりませんが、同じ問題に多くの時間を費やしたので、これはフレームワークのバグだと思います:(

いくつかの関連リンク: https://stackoverflow.com/a/11549596/454266 http://www.sencha.com/forum/showthread.php?209025-Nested-XML-reader-problem&p=838952&viewfull=1#post838952

幸いなことに、ネストされた JSON は問題なく動作します。私のアドバイスは、それに切り替えるか、下位レベルのモデルのロードを手動で処理することです (たとえば、ストア/リーダーを作成し、それに this.raw.types をフィードすることで、hasMany 関連付けのジョブを実行する独自のメソッドを作成します)。

于 2012-10-14T21:57:21.060 に答える