dojox.data.XmlStore examples¶
Contents
subclassing the XmlStore to use an xml-string instead of an url to an xml-file¶
by overriding the method _fetchItems its possible to turn off the xhrGet to the url. the next step is to use the dojox.xml.parser to read the xml string.
<script type="text/javascript">
dojo.require("dijit.Tree");
dojo.require("dijit.tree.TreeStoreModel");
dojo.require("dojox.data.XmlStore");
dojo.require("dojox.xml.parser");
dojo.ready(function() {
hookXmlStore();
var myxml = '<?xml version="1.0" encoding="utf-8"?><root><node><description>Node 1 Description</description><node><heading>1</heading><description>Node 2 Description</description><node><heading>1.1.a</heading><description>Node 3 Description</description></node><node><heading>1.1.b</heading><description>Node 4 Description</description></node></node></node></root>';
var store = new my.data.XmlStringStore({
xmlstring: myxml,
label: "description"
});
var model = new dijit.tree.TreeStoreModel({
store: store,
rootId: "root",
rootLabel: "root",
childrenAttrs: ["node"]
});
var tree = new dijit.Tree({
model: model
}, "tree");
});
hookXmlStore = function() {
dojo.declare("my.data.XmlStringStore", [dojox.data.XmlStore], {
constructor: function(args){
this.inherited("constructor", arguments);
this.xmlstring = args.xmlstring;
this.url = "dummy.xml";
},
_fetchItems: function(request, fetchHandler, errorHandler) {
var url = this._getFetchUrl(request);
if (!url) {
errorHandler(new Error("No URL specified."));
return;
}
var localRequest = (!this.sendQuery ? request : {});
var data = dojox.xml.parser.parse(this.xmlstring);
var items = this._getItems(data, localRequest);
if (items && items.length > 0) {
fetchHandler(items, request);
} else {
fetchHandler([], request);
}
}
});
};
</script>
<div id="tree"></div>