/**
 * Small helper class to make creating {@link Ext.data.Store}s from XML data easier.
 * An XmlStore will be automatically configured with a {@link Ext.data.reader.Xml}.
 *
 * A store configuration would be something like:
 *
 *     var store = new Ext.data.XmlStore({
 *         // store configs
 *         storeId: 'myStore',
 *         url: 'sheldon.xml', // automatically configures a HttpProxy
 *
 *         // reader configs
 *         record: 'Item', // records will have an "Item" tag
 *         idPath: 'ASIN',
 *         totalRecords: '@TotalResults'
 *
 *         fields: [
 *             // set up the fields mapping into the xml doc
 *             // The first needs mapping, the others are very basic
 *             {name: 'Author', mapping: 'ItemAttributes > Author'},
 *             'Title', 'Manufacturer', 'ProductGroup'
 *         ]
 *     });
 *
 * This store is configured to consume a returned object of the form:
 *
 *      <?xml version="1.0" encoding="UTF-8"?>
 *      <ItemSearchResponse xmlns="http://webservices.amazon.com/AWSECommerceService/2009-05-15">
 *          <Items>
 *              <Request>
 *                  <IsValid>True</IsValid>
 *                  <ItemSearchRequest>
 *                      <Author>Sidney Sheldon</Author>
 *                      <SearchIndex>Books</SearchIndex>
 *                  </ItemSearchRequest>
 *              </Request>
 *              <TotalResults>203</TotalResults>
 *              <TotalPages>21</TotalPages>
 *              <Item>
 *                  <ASIN>0446355453</ASIN>
 *                  <DetailPageURL>
 *                      http://www.amazon.com/
 *                  </DetailPageURL>
 *                  <ItemAttributes>
 *                      <Author>Sidney Sheldon</Author>
 *                      <Manufacturer>Warner Books</Manufacturer>
 *                      <ProductGroup>Book</ProductGroup>
 *                      <Title>Master of the Game</Title>
 *                  </ItemAttributes>
 *              </Item>
 *          </Items>
 *      </ItemSearchResponse>
 *
 * An object literal of this form could also be used as the {@link #cfg-data} config option.
 * **Note:** This class accepts all of the configuration options of
 * {@link Ext.data.reader.Xml XmlReader}.
 */
Ext.define('Ext.data.XmlStore', {
    extend: 'Ext.data.Store',
    alias: 'store.xml',
 
    requires: [
        'Ext.data.proxy.Ajax',
        'Ext.data.reader.Xml',
        'Ext.data.writer.Xml'
    ],
 
    constructor: function(config) {
        config = Ext.apply({
            proxy: {
                type: 'ajax',
                reader: 'xml',
                writer: 'xml'
            }
        }, config);
 
        this.callParent([config]);
    }
});