锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
1.浣跨敤js鏉oad xml鏂囦歡
function loadXML(xmlFile)
{
var xmlDoc;
if(window.ActiveXObject)
{
xmlDoc = new ActiveXObject('Microsoft.XMLDOM');
xmlDoc.async = false; //榪欓噷鍗冧竾闇瑕佹敞鎰忥紝闈炲悓姝ョ殑閫夐」錛岄粯璁や負true錛屽悗闈ote 1浼氭湁瑙i噴
xmlDoc.load(xmlFile);
}
else if (document.implementation&&document.implementation.createDocument)
{
xmlDoc = document.implementation.createDocument('', '', null);
xmlDoc.async=false;
xmlDoc.load(xmlFile);
}
else
{
return null;
}
return xmlDoc;
}
function checkXMLDocObj(xmlFile)
{
var xmlDoc = loadXML(xmlFile);
if(xmlDoc==null)
{
alert('Explore do not support xml file load');
}
return xmlDoc;
}
function parseXML(xml) {
var xmlDoc = checkXMLDocObj("/Tree/data.xml"); // 榪欓噷鏄枃浠訛紝榛樿鏍硅妭鐐瑰彨鍋歞ata
var data = xmlDoc.getElementsByTagName("data");
createTreeFromXML(data.item(0)); //榪欓噷鏄竴涓緢tricky鐨勬柟寮忓彇鍒皒ml鏂囦歡鐨勬牴鑺傜偣
var s = dojo.widget.byId("dataTree").selector; //鍙戠幇鍔ㄦ佺殑緇檇ojo鐨則ree node鍔爏elector闈炲父鍥伴毦錛屼絾紿佺劧鍙戠幇dojo tree榛樿緇欐瘡涓涓妭鐐歸兘鏈塻elector錛屾墍浠ョ洿鎺ュ彇鏉ョ敤
dojo.event.connect(s, 'select', 'treeNodeSelected'); //灝辨槸涓涓瓧浜嗭紝鐖?br>}
function createTreeFromXML(root) {
var tree = dojo.widget.byId("dataTree");
if(tree == null)
alert("null");
else
tree.destroy();
tree = dojo.widget.createWidget("Tree", {id: "dataTree", toggle: "wipe", expandLevel: 3}); //鍒涘緩tree
dojo.byId("tree").appendChild(tree.domNode); /鏀劇疆tree
var rootNode = dojo.widget.createWidget("TreeNode", {title: root.localName});
tree.addChild(rootNode);
appendChild(root,rootNode); //寮濮嬪驚鐜掑綊鐨勫垱寤簍ree鐨勫瓙鑺傜偣
}
function appendChild(father,fatherTreeNode) {
var sub;
var subTreeNode;
if(window.ActiveXObject) {
for(var i = 1; i < father.childNodes.length; i=i++) { //榪欓噷鏈変竴涓緢鎭跺績鐨勪簨鎯咃紝灝辨槸ie 鍜宖irefox浜嗭紝涓涓埗鑺傜偣錛屽湪ie涓璯et the child nodes,works fine
sub = father.childNodes[i];
var title = sub.localName;
subTreeNode = dojo.widget.createWidget("TreeNode",{title: title});
fatherTreeNode.addChild(subTreeNode);
appendChild(sub,subTreeNode,objectID);
}
}
else {
for(var i = 1,j=1; i < father.childNodes.length; i=i+2,j++) { // 鍦╢irefox涓幏鍙栵紝瑕侀棿闅斾負2錛屼腑闂存繪槸澶氬嚭涓涓互绔藉厖鏁扮殑瀹朵紮
sub = father.childNodes[i];
var title = sub.localName; //浣跨敤localName灞炴?br> subTreeNode = dojo.widget.createWidget("TreeNode",{title: title}); //鐢熸垚鏂扮殑瀛愯妭鐐?br> fatherTreeNode.addChild(subTreeNode);
appendChild(sub,subTreeNode); //閫掑綊
}
}
return;
}
Note:
1. 鍦╨oad xml鏂囦歡鐨勬椂鍊欓潪鍚屾鍙傛暟涓瀹氳璁劇疆涓篺alse,鍚﹀垯寰堝彲鑳戒細鍙戠敓鍦▁ml鏂囦歡榪樻病鏈塴oad瀹屼箣鍚庡氨璋冪敤澶勭悊浠庤屽彂鐢熸壘涓嶅埌鑺傜偣鐨別rror
2. ie鍜宖irefox鐨刣om child node 闂涔熷煎緱娉ㄦ剰錛屼互鍚庝細鍐嶇爺絀朵竴涓嬮棶浠涔堜細鍙戠敓榪欑闂銆?/p>