Upgrade to ExtJS 3.0.0 - Released 07/06/2009
[extjs.git] / src / data / XmlStore.js
diff --git a/src/data/XmlStore.js b/src/data/XmlStore.js
new file mode 100644 (file)
index 0000000..e6bb5d5
--- /dev/null
@@ -0,0 +1,75 @@
+/*!
+ * Ext JS Library 3.0.0
+ * Copyright(c) 2006-2009 Ext JS, LLC
+ * licensing@extjs.com
+ * http://www.extjs.com/license
+ */
+/**\r
+ * @class Ext.data.XmlStore\r
+ * @extends Ext.data.Store\r
+ * <p>Small helper class to make creating {@link Ext.data.Store}s from XML data easier.\r
+ * A XmlStore will be automatically configured with a {@link Ext.data.XmlReader}.</p>\r
+ * <p>A store configuration would be something like:<pre><code>\r
+var store = new Ext.data.XmlStore({\r
+    // store configs\r
+    autoDestroy: true,\r
+    storeId: 'myStore',\r
+    url: 'sheldon.xml', // automatically configures a HttpProxy\r
+    // reader configs\r
+    record: 'Item', // records will have an "Item" tag\r
+    idPath: 'ASIN',\r
+    totalRecords: '@TotalResults'\r
+    fields: [\r
+        // set up the fields mapping into the xml doc\r
+        // The first needs mapping, the others are very basic\r
+        {name: 'Author', mapping: 'ItemAttributes > Author'},\r
+        'Title', 'Manufacturer', 'ProductGroup'\r
+    ]\r
+});\r
+ * </code></pre></p>\r
+ * <p>This store is configured to consume a returned object of the form:<pre><code>\r
+&#60?xml version="1.0" encoding="UTF-8"?>\r
+&#60ItemSearchResponse xmlns="http://webservices.amazon.com/AWSECommerceService/2009-05-15">\r
+    &#60Items>\r
+        &#60Request>\r
+            &#60IsValid>True&#60/IsValid>\r
+            &#60ItemSearchRequest>\r
+                &#60Author>Sidney Sheldon&#60/Author>\r
+                &#60SearchIndex>Books&#60/SearchIndex>\r
+            &#60/ItemSearchRequest>\r
+        &#60/Request>\r
+        &#60TotalResults>203&#60/TotalResults>\r
+        &#60TotalPages>21&#60/TotalPages>\r
+        &#60Item>\r
+            &#60ASIN>0446355453&#60/ASIN>\r
+            &#60DetailPageURL>\r
+                http://www.amazon.com/\r
+            &#60/DetailPageURL>\r
+            &#60ItemAttributes>\r
+                &#60Author>Sidney Sheldon&#60/Author>\r
+                &#60Manufacturer>Warner Books&#60/Manufacturer>\r
+                &#60ProductGroup>Book&#60/ProductGroup>\r
+                &#60Title>Master of the Game&#60/Title>\r
+            &#60/ItemAttributes>\r
+        &#60/Item>\r
+    &#60/Items>\r
+&#60/ItemSearchResponse>\r
+ * </code></pre>\r
+ * An object literal of this form could also be used as the {@link #data} config option.</p>\r
+ * <p><b>Note:</b> Although not listed here, this class accepts all of the configuration options of \r
+ * <b>{@link Ext.data.XmlReader XmlReader}</b>.</p>\r
+ * @constructor\r
+ * @param {Object} config\r
+ * @xtype xmlstore\r
+ */\r
+Ext.data.XmlStore = Ext.extend(Ext.data.Store, {\r
+    /**\r
+     * @cfg {Ext.data.DataReader} reader @hide\r
+     */\r
+    constructor: function(config){\r
+        Ext.data.XmlStore.superclass.constructor.call(this, Ext.apply(config, {\r
+            reader: new Ext.data.XmlReader(config)\r
+        }));\r
+    }\r
+});\r
+Ext.reg('xmlstore', Ext.data.XmlStore);
\ No newline at end of file