Ext.NET  5.3.0
.NET Component Framework for Enterprise Level Apps
Ext.Net.XmlReader Class Reference

The XML Reader is used by a Proxy to read a server response that is sent back in XML format. This usually happens as a result of loading a Store - for example we might create something like this:Ext.regModel('User', { fields: ['id', 'name', 'email'] });var store = new Ext.data.Store({ model: 'User', proxy: { type: 'ajax', url : 'users.xml', reader: { type: 'xml', record: 'user' } } }); The example above creates a 'User' model. Models are explained in the Model docs if you're not already familiar with them.We created the simplest type of XML Reader possible by simply telling our Store's Proxy that we want a XML Reader. The Store automatically passes the configured model to the Store, so it is as if we passed this instead:reader: { type : 'xml', model: 'User', record: 'user' } The reader we set up is ready to read data from our server - at the moment it will accept a response like this:<?xml version="1.0" encoding="UTF-8"?> <user> <id>1</id> <name>Ed Spencer</name> <email>ed@se.nosp@m.ncha.nosp@m..com</email> </user> <user> <id>2</id> <name>Abe Elias</name> <email>abe@s.nosp@m.ench.nosp@m.a.com</email> </user> The XML Reader uses the configured record option to pull out the data for each record - in this case we set record to 'user', so each <user> above will be converted into a User model.Reading other XML formatsIf you already have your XML format defined and it doesn't look quite like what we have above, you can usually pass XmlReader a couple of configuration options to make it parse your format. For example, we can use the root configuration to parse data that comes back like this:<?xml version="1.0" encoding="UTF-8"?> <users> <user> <id>1</id> <name>Ed Spencer</name> <email>ed@se.nosp@m.ncha.nosp@m..com</email> </user> <user> <id>2</id> <name>Abe Elias</name> <email>abe@s.nosp@m.ench.nosp@m.a.com</email> </user> </users> To parse this we just pass in a root configuration that matches the 'users' above:reader: { type : 'xml', root : 'users', record: 'user' } Note that XmlReader doesn't care whether your root and record elements are nested deep inside a larger structure, so a response like this will still work:<?xml version="1.0" encoding="UTF-8"?> <deeply> <nested> <xml> <users> <user> <id>1</id> <name>Ed Spencer</name> <email>ed@se.nosp@m.ncha.nosp@m..com</email> </user> <user> <id>2</id> <name>Abe Elias</name> <email>abe@s.nosp@m.ench.nosp@m.a.com</email> </user> </users> </xml> </nested> </deeply> Response metadataThe server can return additional data in its response, such as the total number of records and the success status of the response. These are typically included in the XML response like this:<?xml version="1.0" encoding="UTF-8"?> <total>100</total> <success>true</success> <users> <user> <id>1</id> <name>Ed Spencer</name> <email>ed@se.nosp@m.ncha.nosp@m..com</email> </user> <user> <id>2</id> <name>Abe Elias</name> <email>abe@s.nosp@m.ench.nosp@m.a.com</email> </user> </users> If these properties are present in the XML response they can be parsed out by the XmlReader and used by the Store that loaded it. We can set up the names of these properties by specifying a final pair of configuration options:reader: { type: 'xml', root: 'users', totalProperty : 'total', successProperty: 'success' } These final options are not necessary to make the Reader work, but can be useful when the server needs to report an error or if it needs to indicate that there is a lot of data available of which only a subset is currently being returned.Response formatNote: in order for the browser to parse a returned XML document, the Content-Type header in the HTTP response must be set to "text/xml" or "application/xml". This is very important - the XmlReader will not work correctly otherwise. More...

Inheritance diagram for Ext.Net.XmlReader:
Ext.Net.AbstractReader Ext.Net.BaseItem Ext.Net.IAlias Ext.Net.IXObject Ext.Net.IBase

Classes

class  Builder
 
class  Config
 

Public Member Functions

 XmlReader ()
 
XmlReader.Builder ToBuilder ()
 
override IControlBuilder ToNativeBuilder ()
 
 XmlReader (Config config)
 
- Public Member Functions inherited from Ext.Net.AbstractReader
virtual void SetGroupRootProperty (string groupRootProperty)
 Sets the value of groupRootProperty. More...
 
virtual void SetSummaryRootProperty (string summaryRootProperty)
 Sets the value of summaryRootProperty. More...
 
virtual void SetMessageProperty (string messageProperty)
 Sets the value of messageProperty. More...
 
virtual void SetMessageProperty (JFunction messageProperty)
 Sets the value of messageProperty. More...
 
- Public Member Functions inherited from Ext.Net.BaseItem
virtual bool HasExplicitValue (string name)
 
void EnsureDataBind ()
 
virtual void Call (string name)
 
virtual void Call (string name, params object[] args)
 
virtual void AddScript (string script)
 
virtual void AddScript (string script, params object[] args)
 
virtual bool IsEmptyObject ()
 
Apply< T > (IApply config)
 
BaseItem Apply (object config)
 
virtual void LoadViewState (object state)
 
virtual object SaveViewState ()
 
virtual void TrackViewState ()
 
void SetDirty ()
 
virtual void DataBind ()
 

Static Public Member Functions

static implicit operator XmlReader (XmlReader.Config config)
 

Properties

override string InstanceOf [get]
 
override string Type [get]
 Alias More...
 
virtual string Record [get, set]
 The DomQuery path to the repeated element which contains record information. More...
 
override ConfigOptionsCollection ConfigOptions [get]
 
- Properties inherited from Ext.Net.AbstractReader
override string InstanceOf [get]
 
abstract string Type [get]
 Alias More...
 
virtual string GroupRootProperty [get, set]
 Name of the property from which to retrieve remote grouping summary information. More...
 
virtual string IDProperty [get, set]
 Name of the property within a row object that contains a record identifier value. Defaults to The id of the model. If an idProperty is explicitly specified it will override that of the one specified on the model More...
 
virtual bool ImplicitIncludes [get, set]
 True to automatically parse models nested within other models in a response object. See the Ext.data.reader.Reader intro docs for full explanation. Defaults to true. More...
 
virtual ? bool? KeepRawData [get, set]
 Determines if the Reader will keep raw data received from the server in the rawData property. While this might seem useful to do additional data processing, keeping raw data might cause adverse effects such as memory leaks. It is recommended to set keepRawData to false if you do not need the raw data. If you need to process data packet to extract additional data such as row summaries, it is recommended to use transform function for that purpose. Defaults to: true More...
 
virtual bool ReadRecordsOnFailure [get, set]
 True to read extract the records from a data packet even if the success property returns false. Defaults to: true More...
 
virtual string RootProperty [get, set]
 The name of the property which contains the Array of row objects. For JSON reader it's dot-separated list of property names. For XML reader it's a CSS selector. For array reader it's not applicable. By default the natural root of the data will be used. The root Json array, the root XML element, or the array. The data packet value for this property should be an empty array to clear the data or show no data. Defaults to: "" More...
 
virtual string SuccessProperty [get, set]
 Name of the property from which to retrieve the success attribute. Defaults to success. See Ext.data.proxy.Proxy.exception for additional information. More...
 
virtual string SummaryRootProperty [get, set]
 Name of the property from which to retrieve remote summary information. More...
 
virtual string TotalProperty [get, set]
 Name of the property from which to retrieve the total number of records in the dataset. This is only needed if the whole dataset is not passed in one go, but is being paged from the remote server. Defaults to total. More...
 
virtual TransformFunction Transform [get]
 If a transform function is set, it will be invoked just before readRecords executes. It is passed the raw (deserialized) data object. The transform function returns a data object, which can be a modified version of the original data object, or a completely new data object. The transform can be a function, or an object with a 'fn' key and an optional 'scope' key. More...
 
virtual string TransformProxy [get]
 A proxy to render .Transform to client More...
 
virtual string TypeProperty [get, set]
 The name of the property in a node raw data block which indicates the type of the model to be created from that raw data. Useful for heterogenous trees. For example, hierarchical geographical data may look like this: { nodeType: 'Territory', name: 'EMEA', children: [{ nodeType: 'Country', name: 'United Kingdon', children: [{ nodeType: 'City', name: 'London' }] }] } More...
 
virtual string MessageProperty [get, set]
 The name of the property which contains a response message for exception handling. More...
 
virtual JFunction MessagePropertyFn [get, set]
 The name of the property which contains a response message for exception handling. More...
 
virtual string ModelName [get, set]
 The Ext.data.Model associated with this reader More...
 
string PropertyName [get]
 
override ConfigOptionsCollection ConfigOptions [get]
 
- Properties inherited from Ext.Net.BaseItem
virtual string InstanceOf [get]
 
ItemState State [get]
 
virtual DefaultValueMode DefaultValueMode [get, set]
 
virtual bool DesignMode [get]
 
bool AutoDataBind [get, set]
 
ResourceManager ResourceManager [get]
 
virtual Control Owner [get, set]
 The Owner Control for this Listener. More...
 
virtual bool IsDefault [get]
 Does this object currently represent it's default state. More...
 
bool IsTrackingViewState [get]
 
EventHandlerList Events [get]
 
EventHandler DataBinding
 
Control?? BindingContainer [get]
 
virtual ConfigItemCollection?? CustomConfig [get]
 Collection of custom js config More...
 
virtual ConfigOptionsCollection ConfigOptions [get]
 
virtual ConfigOptionsExtraction ConfigOptionsExtraction [get]
 
System.Web.Mvc.HtmlHelper?? HtmlHelper [get, set]
 
- Properties inherited from Ext.Net.IXObject
ConfigOptionsCollection ConfigOptions [get]
 
ConfigOptionsExtraction ConfigOptionsExtraction [get]
 
DefaultValueMode DefaultValueMode [get, set]
 
- Properties inherited from Ext.Net.IAlias
string PropertyName [get]
 

Additional Inherited Members

- Protected Member Functions inherited from Ext.Net.BaseItem
 BaseItem (Control owner)
 
 BaseItem ()
 
virtual void OwnerUpdate (Control owner)
 
virtual void OnDataBinding (EventArgs e)
 

Detailed Description

The XML Reader is used by a Proxy to read a server response that is sent back in XML format. This usually happens as a result of loading a Store - for example we might create something like this:

Ext.regModel('User', { fields: ['id', 'name', 'email'] });

var store = new Ext.data.Store({ model: 'User', proxy: { type: 'ajax', url : 'users.xml', reader: { type: 'xml', record: 'user' } } }); The example above creates a 'User' model. Models are explained in the Model docs if you're not already familiar with them.

We created the simplest type of XML Reader possible by simply telling our Store's Proxy that we want a XML Reader. The Store automatically passes the configured model to the Store, so it is as if we passed this instead:

reader: { type : 'xml', model: 'User', record: 'user' } The reader we set up is ready to read data from our server - at the moment it will accept a response like this:

<?xml version="1.0" encoding="UTF-8"?> <user> <id>1</id> <name>Ed Spencer</name> <email>ed@se.nosp@m.ncha.nosp@m..com</email> </user> <user> <id>2</id> <name>Abe Elias</name> <email>abe@s.nosp@m.ench.nosp@m.a.com</email> </user> The XML Reader uses the configured record option to pull out the data for each record - in this case we set record to 'user', so each <user> above will be converted into a User model.

Reading other XML formats

If you already have your XML format defined and it doesn't look quite like what we have above, you can usually pass XmlReader a couple of configuration options to make it parse your format. For example, we can use the root configuration to parse data that comes back like this:

<?xml version="1.0" encoding="UTF-8"?> <users> <user> <id>1</id> <name>Ed Spencer</name> <email>ed@se.nosp@m.ncha.nosp@m..com</email> </user> <user> <id>2</id> <name>Abe Elias</name> <email>abe@s.nosp@m.ench.nosp@m.a.com</email> </user> </users> To parse this we just pass in a root configuration that matches the 'users' above:

reader: { type : 'xml', root : 'users', record: 'user' } Note that XmlReader doesn't care whether your root and record elements are nested deep inside a larger structure, so a response like this will still work:

<?xml version="1.0" encoding="UTF-8"?> <deeply> <nested> <xml> <users> <user> <id>1</id> <name>Ed Spencer</name> <email>ed@se.nosp@m.ncha.nosp@m..com</email> </user> <user> <id>2</id> <name>Abe Elias</name> <email>abe@s.nosp@m.ench.nosp@m.a.com</email> </user> </users> </xml> </nested> </deeply> Response metadata

The server can return additional data in its response, such as the total number of records and the success status of the response. These are typically included in the XML response like this:

<?xml version="1.0" encoding="UTF-8"?> <total>100</total> <success>true</success> <users> <user> <id>1</id> <name>Ed Spencer</name> <email>ed@se.nosp@m.ncha.nosp@m..com</email> </user> <user> <id>2</id> <name>Abe Elias</name> <email>abe@s.nosp@m.ench.nosp@m.a.com</email> </user> </users> If these properties are present in the XML response they can be parsed out by the XmlReader and used by the Store that loaded it. We can set up the names of these properties by specifying a final pair of configuration options:

reader: { type: 'xml', root: 'users', totalProperty : 'total', successProperty: 'success' } These final options are not necessary to make the Reader work, but can be useful when the server needs to report an error or if it needs to indicate that there is a lot of data available of which only a subset is currently being returned.

Response format

Note: in order for the browser to parse a returned XML document, the Content-Type header in the HTTP response must be set to "text/xml" or "application/xml". This is very important - the XmlReader will not work correctly otherwise.

Constructor & Destructor Documentation

◆ XmlReader() [1/2]

Ext.Net.XmlReader.XmlReader ( )
inline

◆ XmlReader() [2/2]

Ext.Net.XmlReader.XmlReader ( Config  config)
inline

Member Function Documentation

◆ operator XmlReader()

static implicit Ext.Net.XmlReader.operator XmlReader ( XmlReader.Config  config)
inlinestatic

◆ ToBuilder()

XmlReader.Builder Ext.Net.XmlReader.ToBuilder ( )
inline

◆ ToNativeBuilder()

override IControlBuilder Ext.Net.XmlReader.ToNativeBuilder ( )
inlinevirtual

Reimplemented from Ext.Net.BaseItem.

Property Documentation

◆ ConfigOptions

override ConfigOptionsCollection Ext.Net.XmlReader.ConfigOptions
get

◆ InstanceOf

override string Ext.Net.XmlReader.InstanceOf
get

◆ Record

virtual string Ext.Net.XmlReader.Record
getset

The DomQuery path to the repeated element which contains record information.

◆ Type

override string Ext.Net.XmlReader.Type
getprotected

Alias


The documentation for this class was generated from the following files: