js读取xml文件,解决浏览器兼容问题
使用children属性存在浏览器兼容问题,在ie中无法实现
$.ajax({
//请求方式为get
type: "GET",
//xml文件位置
url: "<%=path%>/flex/assets/data/CatalogTreeData.xml",
//返回数据格式为xml
dataType: "xml",
//请求成功完成后要执行的方法
success: function (xml) {
//获取根节点的所有子节点
var elements = xml.documentElement.childNodes;
//保存tree数据
var json = "[";
//获取所需的数据
for (var i = 0; i < elements.length; i++) {
//只取得lable=nearestNeighbourSearch的节点分支数据
if(null!=elements[i].attributes && "nearestNeighbourSearch" == elements[i].getAttribute("label")){
json = iterationNode(elements[i].childNodes, true, 1, json);
json = json.substr(0,json.length-1) + "]";
var zNodes = eval(json);
//初始化参数树
var zTree = $.fn.zTree.init($("#treeDemo"), setting, zNodes);
//默认选中第一个叶子节点
//zTree.setting.callback.onClick(null, zTree.setting.treeId, zTree.getNodeByParam('isParent', false));
}
}
}
});
/*
* 遍历迭代xml节点
* childNodes 子节点集合
* hasChildren 是否有子节点
* id 节点ID值
* json 存储节点字符串
*
*/
function iterationNode(childNodes, hasChildren, id, json){
if(hasChildren){
for( var i=0; childNodes!=null && i<childNodes.length; i++){
var node = childNodes[i];
if(null!=node.attributes){
json += "{id:\""+id+"_"+i+"\","
+ "pId:\""+id+"\","
+ "name:\""+node.getAttribute("titleName")+"\","
+ "open:0,"
+ "value:\""+node.getAttribute("label")+"\",";
if(node.childNodes!=null && node.childNodes.length>0 ){
json += "isParent:1},";
json = iterationNode(node.childNodes, true, id+"_"+i, json);
}else{
json += "isParent:0},";
}
}
}
}
return json;
}