JavaScript遍历XML

<script language="JavaScript" type="text/javascript">
var xmlFile="http://xling.blueidea.com/rss2.xml";

var createXMLDom=function(){
  if (window.ActiveXObject)
  var xmldoc=new ActiveXObject("Microsoft.XMLDOM");
  else
  if (document.implementation&&document.implementation.createDocument)
    var xmldoc=document.implementation.createDocument("","doc",null);
  xmldoc.async = false;
  //为了和FireFox一至,这里不能改为False;
  xmldoc.preserveWhiteSpace=true;
  return xmldoc;
}

var createXMLHttp=function(){
  var xmlHttp;
  if (window.ActiveXObject){
  xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
  }else{
  xmlHttp=new XMLHttpRequest();
  }
  return xmlHttp;
}


//-----------------------------------------------------------------------------
//加载XML文件。
var xmlDom=createXMLDom();
try{
  xmlDom.load(xmlFile);
}catch(e){
  var xmlHttp=createXMLHttp();
  xmlHttp.onreadystatechange = function(){
    if(xmlHttp.readyState == 4){
    xmlDom=xmlHttp.responseXML;
    }else{
    //window.state="XML文件加载中...";
    }
  } 
  xmlHttp.open("GET",xmlFile,false);
  xmlHttp.send(null);
}
var DOMRoot=xmlDom.documentElement;
//取出指定节点的属性。
var getDOMAtt=function(pNode,pAttribute){
  try{
  return pNode.attributes.getNamedItem(pAttribute).nodeValue;
  }catch(e){
  //alert("指定节点不存在,或指定属性:"+pAttribute+" 不存在!")
  return false;
  }
 
}

var attList=function(pNode){
  if(pNode.nodeType == 4) return '';
  var oAtt,tmpString="[ ";
  try{
  for(var i=0;oAtt=pNode.attributes;i++){
    tmpString+=oAtt.nodeName+" = '" + oAtt.nodeValue+"' ";
  }
  tmpString+=" ]"
  return tmpString;
  }catch(e){ return ''}
}

var getNodeName = function(pNode){
  if(pNode.nodeType == 4) return '';
  return pNode.nodeName;
}

var getNodeValue = function(pNode){
  try{
  return " : " + pNode.firstChild.nodeValue;
  }catch(e){return ''}
}

var nbsp=function(pNum){
  var tmpString=""
  for(var i=0;i<pNum;i++){
  tmpString+=" "//这里是全角的空格
  }
  return tmpString;
}

var switchTree=function(pNode,pLevel){
  var tNode,i;
  for(i=0;tNode=pNode.childNodes;i++){
  if(tNode.nodeType==3) continue;//因为preserveWhiteSpace等于true
  document.write(nbsp(pLevel),"<font color='blue'><b>",getNodeName(tNode),"</b></font><font color='red'>",attList(tNode),"</font>",getNodeValue(tNode),"<br />");
  switchTree(tNode,pLevel+1);
  }
}

switchTree(DOMRoot,2)
</script>
</html>