项目上面用js读到这些xml串后,需要显示到Ext 的gird中。 无论在Ext的例子中还是文档中,Grid的store加载的xml信息都是以xml文件存在的。页面上的只有array或者json格式数据的才被store认可,没有直接加载的xml串或者dom对象的。 后来去extjs官方论坛找到了答案,解决办法就是自己把xml串封装成dom对象,然后用Ext.data.MemoryProxy做代理
摘录如下:
- //load XML as string
- var strXML = "<Tags></Tags>";
- var xmlObject;
- //load XML string code for IE
- if (window.ActiveXObject)
- {
- var doc=new ActiveXObject("Microsoft.XMLDOM");
- doc.async="false";
- doc.loadXML(strXML);
- }
- //load XML string code for Mozilla, Firefox, Opera, etc.
- else
- {
- var parser=new DOMParser();
- var doc=parser.parseFromString(strXML,"text/xml");
- }
- xmlObject = doc.documentElement;
- //
- var dataStore = new Ext.data.Store({
- proxy: new Ext.data.MemoryProxy(xmlObject),
- reader: new Ext.data.XmlReader({
- record: 'Item',
- id: 'ItemID'
- }, [
- 'Cat1', 'Cat2', 'Cat3', 'Cat4'
- ])
- });
- //etc. etc.