`
fastwind
  • 浏览: 325227 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

Ext.data-DataReader/ArrayReader/JsonReader/XmlRead

阅读更多

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);

分享到:
评论

相关推荐

    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 ...

    extjs学习资源

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

    extjs帮助文档pdf版

    - `Ext.data.DataReader.read(response, success)`: 读取响应数据。 - `Ext.data.DataReader.transform(records)`: 转换记录。 #### 32. Ext.data.ArrayReader 类 (P.26) - **概述**:读取数组形式的数据。 - **...

    extjs帮助文档

    - `new Ext.data.ArrayReader(readerConfig, recordType)`:创建一个新的数组读取器实例。 - `Ext.data.ArrayReader.read(response, options)`:读取数据。 #### 三十三、Ext.data.JsonReader类(第26页) - **...

    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 ...

    EXT核心API详解.doc

    29. **Ext.data.ArrayReader类**、**JsonReader类**和**XmlReader类**:不同数据格式(数组、JSON、XML)的特定数据读取器。 30. **Ext.data.Store类**:数据存储,管理数据集,与DataProxy和DataReader交互。 31....

    精通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 服务层接口 ...

    精通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 服务层接口 ...

    extjs核心api详解.doc

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

    EXTJS___API详解

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

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

    在EXT JS中,`Ext.data`是数据处理的关键模块,它包含了数据的读取、存储和代理。以下是这个模块的一些重要组件和概念: 1. **DataProxy**: 数据代理是EXT JS中数据层的重要组成部分,它负责与服务器端进行数据交互...

    Ext数据模型Store

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

Global site tag (gtag.js) - Google Analytics