PDA

View Full Version : XML reader to read sub elements



AndrewKolas
8 Mar 2013, 3:02 PM
I need to read XML that I'm receiving through a proxy that contains sub elements.

Sample xml response:



<records>
<record>
<id>239</id>
<name>Media X</name>
<state milestone="EFP">
<entryDate>2013-03-08T12:13:52Z</entryDate>
<entrySize>10</entrySize>
</state>
<state milestone="LOAD">
<entryDate>2013-03-08T12:16:51Z</entryDate>
<entrySize>11</entrySize>
</state>
</record>
</records>





My proxy looks like this:


proxy: {
type: 'rest',
api: {
read: 'Routing/DataService/pipeline/'
},
reader: {
type: 'xml',
root: 'records',
record: 'record',
model: 'AM.model.Record'
}
}


Finally, my model's fields are defined:



fields: [


{ name: 'id', type: 'int', hidden: true, editable: false },
{ name: 'mediaName', type: 'string' },
{
name: 'state', hidden: true, convert: function (value, record) {
alert(value);
}
}
]


I'm not worried about having the states mapped to a particular model, though obviously that would be preferred, but at least they should be put into a javascript object. Preferably, based on my example XML,


state: [
{
milestone: "EFP",
entryDate: ...,
entrySize: ...,
},
{
milestone: "LOAD",
entryDate: ...,
entrySize: ...,
}
]


As it stands, Ext.data.reader.Xml.getNodeValue returns null.

Is there any deep reader I can use for this, or am I on my own?

mitchellsimoens
10 Mar 2013, 8:55 PM
You are using the convert method and not returning anything therefore the data value will be undefined. You can use the mapping config to map to a node. You can also use associations to have the states array be created as a hasMany association.