js读取xml文件,解决浏览器兼容问题

1 篇文章 0 订阅
1 篇文章 0 订阅

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;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值