当前位置:编程学习 > XML/UML >>

javascript解析XML生成树形结构(兼容Firefox,IE9)

直接将源代码拷贝过来了


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd ">

<html xmlns=" http://www.w3.org/1999/xhtml " >
<head runat="server">
    <title>无标题页</title>
    <script language="javascript" charset="GB2312" type="text/javascript">
        var xmlStr='<?xml version="1.0" encoding="utf-8"?><xmlRoot value="root"><child value="c1"><child_1>c11</child_1></child><child>c2</child></xmlRoot>';
        var blank=".   ";
        var blankTimes=1;
        var blankSize=40;
       
        var idIndex=0;

//兼容IE和Firefox的XML解析方法
function loadXML(xmlStr)
{
     if(!window.DOMParser && window.ActiveXObject){   //window.DOMParser 判断是否是非ie浏览器
        var xmlDomVersions = ['MSXML.2.DOMDocument.6.0','MSXML.2.DOMDocument.3.0','Microsoft.XMLDOM'];
       for(var i=0;i<xmlDomVersions.length;i++){
           try{
                xmlDoc = new ActiveXObject(xmlDomVersions[i]);
                xmlDoc.async = false;
                xmlDoc.loadXML(xmlStr); //loadXML方法载入xml字符串
               break;
            }catch(e){
            }
        }
    }
   //支持Mozilla浏览器
   else if(window.DOMParser && document.implementation && document.implementation.createDocument){
      
       try{
            domParser = new DOMParser();
            xmlDoc = domParser.parseFromString(xmlStr,"text/xml");
        }catch(e){
        }
    }
   else{
       return null;
    }

   return xmlDoc;
}
        function xmlParser(xmlStr)
        {
            var childs=null;
            var root=null;
            var xmlDoc=loadXML(xmlStr);
            root=xmlDoc.documentElement;
            //childs=root.getChild
            //alert(root.nodeName);
            childs=root.childNodes;
            //alert(document.body);
            var topDiv=document.createElement("div");
            document.body.appendChild(topDiv);
            //alert(topDiv);
            dealWithNode(root,0,topDiv);
           
        }
        function dealWithNode(node,blankTimes,container)
        {
            var children=null;
            var childCount=0;
            var isLeaf=false;
           
            var htmlnode=null;
            var textnode=null;
           
            var bl_times=blankTimes;
            var bl_str="";
           
            var node_value="";
           
//            for(var bl=0;bl<bl_times;bl++)
//            {
//                bl_str=bl_str+blank;
//            }
           
            if(node)
            {
                isLeaf=isLeafNode(node);
                var str="";
                var spaceLength=0;
                if(idIndex>0)
                {
                   str=getSpaceString(4);
                }
                if(bl_times>0)
                {
                       spaceLength=(bl_times-1)*blankSize;
                }
                if(isLeaf)
                {
    

补充:web前端 , JavaScript ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,