`
wode66
  • 浏览: 742748 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

DataReader、ArrayReader、JsonReader 、.XmlReader

阅读更多

Ext.data.DataReader
纯虚类,从数据源得到结构化数据转换为元数据对象,对象包含Record的集合,一般用做Store对象的元数据,
具有如下格式
{
totalRecord:int,
records:Array of Ext.data.Record
}
具体使用参见三个子类
Ext.data.ArrayReader/Ext.data.JsonReader/Ext.data.XmlReader


方法
DataReader( Object meta, Object recordType )
构造

Ext.data.ArrayReader
用于读数组到一个元数据对象

ArrayReader( Object meta, Object recordType )
构造,第一个参数是配置除了可以指示使用哪个字段做id外,不懂其它的用法,
第二个参数是recordType与record对象的create方法的参数一样,是一样config对象数组,具体参见
readRecords( Object o ) : Object
读取o,返回一个元数据对象

用例示范:
//定义数组
var arr=[ [1, 'Bill', 'Gardener'], [2, 'Ben', 'Horticulturalist'] ]; 
var reader = new Ext.data.ArrayReader(
//以第一个元素做为recordid
   {id: 0}, 
//定义数组到record的映射关系
   [
    {name: 'name', mapping: 1},         
    {name: 'occupation', mapping: 2}    
   ]
);
//生成元数据
var data=reader.readRecords(arr);

Ext.data.JsonReader
用于将一个json对象转换为元数据对象

JsonReader( Object meta, Object recordType )
JsonReader的构造参数meta可以有更多选择,
{
  id : String,
  root : String,
  successProperty : String,
  totalProperty : String
}
都是对应json对象的属性名

read( Object response ) : Object
从一个response对象返回,response.responseText属性应仅含有一个json格式数据块

readRecords( Object o ) : Object
读取o,返回一个元数据对象

使用示例:
     var json={ 'results': 2, 'rows': [
    { 'id': 1, 'name': 'Bill', occupation: 'Gardener' },
    { 'id': 2, 'name': 'Ben', occupation: 'Horticulturalist' } ]
};
    var reader=new Ext.data.JsonReader(
        {
        totalProperty: "results",//totalRecords属性由json.results得到
        root: "rows",            //构造元数据的数组由json.rows得到
        id: "id"                //id由json.id得到
        },[
        {name: 'name', mapping: 'name'}, 
        {name: 'occupation'}            //如果name与mapping同名,可以省略mapping
        ]
    )
    var data=reader.readRecords(json);



Ext.data.XmlReader
xmlreader对象当然是为xml而准备的

构造:
XmlReader( Object meta, Mixed recordType )
meta与jsonreader类似, 
meta是一个{ 
    id : String,
    record : String,
    success : String,
    totalRecords : String
}对象,只是这些字符串都是相对于文档根目录的domquery路径
read( Object response ) : Object
readRecords( Object doc ) : Object
....


var str=["<?xml version=\"1.0\" encoding=\"utf-8\" ?>",
    "<dataset>",
 "<results>2</results>",
 "<row>",
   "<id>1</id>",
   "<name>Bill</name>",
   "<occupation>Gardener</occupation>",
 "</row>",
 "<row>",
   "<id>2</id>",
   "<name>Ben</name>",
   "<occupation>Horticulturalist</occupation>",
 "</row>",
"</dataset>"].join("");

//生成xmldocument对象
var xmlDocument;
 if(Ext.isIE){
    xmlDocument = new ActiveXObject("Msxml2.FreeThreadedDOMDocument")
    xmlDocument.async=false;
    xmlDocument.resolveExternals = false;
    xmlDocument.loadXML(str) 
}
else{
   xmlDocument = (new DOMParser()).parseFromString(str, "text/xml");
}

//然后开始...和其它两个reader一样的用法,只是这儿换了一种写法,recordtype也可以是一个record对象
var record = Ext.data.Record.create([
   {name: 'name', mapping: 'name'},     // "mapping" property not needed if it's the same as "name"
   {name: 'occupation'}                 // This field will use "occupation" as the mapping.
])
var reader = new Ext.data.XmlReader({
   totalRecords: "results", 
   record: "row",           //row是节点选择器
   id: "id"                 
}, record);
var data=reader.readRecords(xmlDocument);

 

分享到:
评论

相关推荐

    基于extjs的.NET3.5控件Coolite 1.0.0.34580(Preview预览版)

    31. ArrayReader: added IDProperty and IDIndex (instead of ReaderID) 32. Renamed StoreResponseData class .TotalCount property to .Total. 33. Renamed StoreRefreshDataEventArgs class .TotalCount ...

    extjs核心api详解.doc

    这部分讲解了数据连接(Connection/Ajax)、数据代理(DataProxy,如HttpProxy、MemoryProxy、ScriptTagProxy)、数据读取器(DataReader,如ArrayReader、JsonReader、XmlReader)以及数据存储(Store)的使用。...

    ExtJS入门教程(超级详细)

    31、Ext.data.DataReader类 ……………26 32、Ext.data.ArrayReader类 …………… 26 33、Ext.data.JsonReader类 …………… 26 34、Ext.data.XmlReader类 …………… 27 35、Ext.data.Store类 …………………… 28 ...

    EXTJS___API详解

    **DataReader, ArrayReader, JsonReader, XmlReader 类**:数据读取器,用于解析不同格式的服务器响应数据。 29-34. **Store, GroupingStore, SimpleStore, Tree, Node 类**:数据存储类,管理数据集,支持分组、...

    EXT核心API详解

    31、Ext.data.DataReader类 ……………26 32、Ext.data.ArrayReader类 …………… 26 33、Ext.data.JsonReader类 …………… 26 34、Ext.data.XmlReader类 …………… 27 35、Ext.data.Store类 …………………… 28 ...

    精通JS脚本之ExtJS框架.part2.rar

    13.6.2 Ext.data.ArrayReader 13.6.3 Ext.data.JsonReader 13.6.4 Ext.data.XmlReader 13.7 Ext.ux.DWR 13.7.1 Ext.data.DwrProxy 13.7.2 Ext.data.DWRTreeLoader 13.7.4 Web服务端配置 13.7.5 服务层接口 ...

    精通JS脚本之ExtJS框架.part1.rar

    13.6.2 Ext.data.ArrayReader 13.6.3 Ext.data.JsonReader 13.6.4 Ext.data.XmlReader 13.7 Ext.ux.DWR 13.7.1 Ext.data.DwrProxy 13.7.2 Ext.data.DWRTreeLoader 13.7.4 Web服务端配置 13.7.5 服务层接口 ...

    EXT核心API详解.doc

    25. **Ext.data.DataReader类**:解析服务器返回的数据,如ArrayReader、JsonReader、XmlReader。 26. **Ext.data.Store类**:数据存储容器,管理数据记录和数据加载。 27. **GroupingStore类**、**SimpleStore类*...

    etjs核心api详解免费范文精选.docx

    - `ArrayReader`: 解析数组形式的数据。 - `JsonReader`: 解析JSON格式的数据。 - `XmlReader`: 解析XML格式的数据。 3. `Ext`类中的`addBehaviors`方法用于向选择的元素添加行为,也就是事件监听器。此方法接受...

    extjs学习资源

    - **数据读取器**: `DataReader`、`ArrayReader`、`JsonReader`和`XmlReader`用于解析不同格式的数据源。 - **数据存储**: `Store`用于管理数据集,而`GroupingStore`、`JsonStore`和`SimpleStore`提供了更高级的...

    Ext数据模型Store

    EXT提供了如`XmlReader`、`JsonReader`和`ArrayReader`等不同的Reader,它们能解析不同格式的数据,并将解析结果转化为Record对象,Record是数据集中的单条记录,包含一系列定义好的DataField,每个DataField定义了...

Global site tag (gtag.js) - Google Analytics