本文转载自http://xdom.blogbus.com/logs/63153339.html
首先导入Ext.ux.tree.XmlTreeLoader.js
/*!
* Ext JS Library 3.2.0
* Copyright(c) 2006-2010 Ext JS, Inc.
* licensing@extjs.com
* http://www.extjs.com/license
*/
Ext.ns('Ext.ux.tree');
/**
* @class Ext.ux.tree.XmlTreeLoader
* @extends Ext.tree.TreeLoader
*
A TreeLoader that can convert an XML document into a hierarchy of {@link Ext.tree.TreeNode}s.
* Any text value included as a text node in the XML will be added to the parent node as an attribute
* called innerText. Also, the tag name of each XML node will be added to the tree node as
* an attribute called tagName.
*
By default, this class expects that your source XML will provide the necessary attributes on each
* node as expected by the {@link Ext.tree.TreePanel} to display and load properly. However, you can
* provide your own custom processing of node attributes by overriding the {@link #processNode} method
* and modifying the attributes as needed before they are used to create the associated TreeNode.
* @constructor
* Creates a new XmlTreeloader.
* @param {Object} config A config object containing config properties.
*/
Ext.ux.tree.XmlTreeLoader = Ext.extend(Ext.tree.TreeLoader, {
/**
* @property XML_NODE_ELEMENT
* XML element node (value 1, read-only)
* @type Number
*/
XML_NODE_ELEMENT : 1,
/**
* @property XML_NODE_TEXT
* XML text node (value 3, read-only)
* @type Number
*/
XML_NODE_TEXT : 3,
// private override
processResponse : function(response, node, callback){
var xmlData = response.responseXML;
var root = xmlData.documentElement || xmlData;
try{
node.beginUpdate();
node.appendChild(this.parseXml(root));
node.endUpdate();
if(typeof callback == "function"){
callback(this, node);
}
}catch(e){
this.handleFailure(response);
}
},
// private
parseXml : function(node) {
var nodes = [];
Ext.each(node.childNodes, function(n){
if(n.nodeType == this.XML_NODE_ELEMENT){
var treeNode = this.createNode(n);
if(n.childNodes.length > 0){
var child = this.parseXml(n);
&