Upgrade to ExtJS 4.0.7 - Released 10/19/2011
[extjs.git] / docs / source / Xml2.html
1 <!DOCTYPE html>
2 <html>
3 <head>
4   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
5   <title>The source code</title>
6   <link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" />
7   <script type="text/javascript" src="../resources/prettify/prettify.js"></script>
8   <style type="text/css">
9     .highlight { display: block; background-color: #ddd; }
10   </style>
11   <script type="text/javascript">
12     function highlight() {
13       document.getElementById(location.hash.replace(/#/, "")).className = "highlight";
14     }
15   </script>
16 </head>
17 <body onload="prettyPrint(); highlight();">
18   <pre class="prettyprint lang-js"><span id='Ext-data-writer-Xml'>/**
19 </span> * @author Ed Spencer
20  * @class Ext.data.writer.Xml
21  * @extends Ext.data.writer.Writer
22
23 This class is used to write {@link Ext.data.Model} data to the server in an XML format.
24 The {@link #documentRoot} property is used to specify the root element in the XML document.
25 The {@link #record} option is used to specify the element name for each record that will make
26 up the XML document.
27
28  * @markdown
29  */
30 Ext.define('Ext.data.writer.Xml', {
31     
32     /* Begin Definitions */
33     
34     extend: 'Ext.data.writer.Writer',
35     alternateClassName: 'Ext.data.XmlWriter',
36     
37     alias: 'writer.xml',
38     
39     /* End Definitions */
40     
41 <span id='Ext-data-writer-Xml-cfg-documentRoot'>    /**
42 </span>     * @cfg {String} documentRoot The name of the root element of the document. Defaults to &lt;tt&gt;'xmlData'&lt;/tt&gt;.
43      * If there is more than 1 record and the root is not specified, the default document root will still be used
44      * to ensure a valid XML document is created.
45      */
46     documentRoot: 'xmlData',
47     
48 <span id='Ext-data-writer-Xml-cfg-defaultDocumentRoot'>    /**
49 </span>     * @cfg {String} defaultDocumentRoot The root to be used if {@link #documentRoot} is empty and a root is required
50      * to form a valid XML document.
51      */
52     defaultDocumentRoot: 'xmlData',
53
54 <span id='Ext-data-writer-Xml-cfg-header'>    /**
55 </span>     * @cfg {String} header A header to use in the XML document (such as setting the encoding or version).
56      * Defaults to &lt;tt&gt;''&lt;/tt&gt;.
57      */
58     header: '',
59
60 <span id='Ext-data-writer-Xml-cfg-record'>    /**
61 </span>     * @cfg {String} record The name of the node to use for each record. Defaults to &lt;tt&gt;'record'&lt;/tt&gt;.
62      */
63     record: 'record',
64
65     //inherit docs
66     writeRecords: function(request, data) {
67         var me = this,
68             xml = [],
69             i = 0,
70             len = data.length,
71             root = me.documentRoot,
72             record = me.record,
73             needsRoot = data.length !== 1,
74             item,
75             key;
76             
77         // may not exist
78         xml.push(me.header || '');
79         
80         if (!root &amp;&amp; needsRoot) {
81             root = me.defaultDocumentRoot;
82         }
83         
84         if (root) {
85             xml.push('&lt;', root, '&gt;');
86         }
87             
88         for (; i &lt; len; ++i) {
89             item = data[i];
90             xml.push('&lt;', record, '&gt;');
91             for (key in item) {
92                 if (item.hasOwnProperty(key)) {
93                     xml.push('&lt;', key, '&gt;', item[key], '&lt;/', key, '&gt;');
94                 }
95             }
96             xml.push('&lt;/', record, '&gt;');
97         }
98         
99         if (root) {
100             xml.push('&lt;/', root, '&gt;');
101         }
102             
103         request.xmlData = xml.join('');
104         return request;
105     }
106 });
107 </pre>
108 </body>
109 </html>