/** * @author Ed Spencer * @class Ext.data.XmlWriter * @extends Ext.data.Writer * *

Writer that outputs model data in XML format

*/ Ext.data.XmlWriter = Ext.extend(Ext.data.Writer, {
/** * @cfg {String} documentRoot The name of the root element of the document. Defaults to 'xmlData'. */ documentRoot: 'xmlData',
/** * @cfg {String} header A header to use in the XML document (such as setting the encoding or version). * Defaults to ''. */ header: '',
/** * @cfg {String} record The name of the node to use for each record. Defaults to 'record'. */ record: 'record', //inherit docs writeRecords: function(request, data) { var tpl = this.buildTpl(request, data); request.xmlData = tpl.apply(data); return request; }, buildTpl: function(request, data) { if (this.tpl) { return this.tpl; } var tpl = [], root = this.documentRoot, record = this.record, first, key; if (this.header) { tpl.push(this.header); } tpl.push('<', root, '>'); if (data.length > 0) { tpl.push('<', record, '>'); first = data[0]; for (key in first) { if (first.hasOwnProperty(key)) { tpl.push('<', key, '>{', key, '}'); } } tpl.push(''); } tpl.push(''); this.tpl = new Ext.XTemplate(tpl.join('')); return this.tpl; } }); Ext.data.WriterMgr.registerType('xml', Ext.data.XmlWriter);