/**//* * get all nodes's attribute and text */ function getAT(nodes)...{ var XMLData=[]; for(var i=0;i<nodes.length;i++)...{ var crtNode=...{}; crtNode.$name=nodes[i].nodeName; if(nodes[i].attributes)...{ for(var j=0;j<nodes[i].attributes.length;j++)...{ debug.innerHTML+='<i>'+nodes[i].attributes[j].name+'='+nodes[i].attributes[j].value+'</i><br>'; crtNode[nodes[i].attributes[j].name]=nodes[i].attributes[j].value; } } if(nodes[i].hasChildNodes())...{ if(nodes[i].firstChild.nodeType==3)...{ crtNode.$value=nodes[i].firstChild.nodeValue; }else...{ crtNode.$value=null; var childNode=getAT(nodes[i].childNodes); debug.innerHTML+='<u>'+childNode[0].$name+'</u><br>'; crtNode[childNode[0].$name]=childNode; } } XMLData.push(crtNode); } return XMLData; } /**//* * Load XML into an array, each item of this array is an object. every object has at least two property: $name which is the xml node name and $value which is the text of the xml node(maybe null). * @usage: xml=loadXML('game.xml'); */ var XMLMSG='';// record error message, when a parse error ouccored var _XML=''; // save xml text var loadXML =function(xmlFile) ...{ var xmlDoc; if(window.ActiveXObject) ...{ xmlDoc =new ActiveXObject('Microsoft.XMLDOM'); xmlDoc.async =false; xmlDoc.load(xmlFile); } elseif (document.implementation&&document.implementation.createDocument) ...{ xmlDoc = document.implementation.createDocument('', '', null); xmlDoc.load(xmlFile); } else ...{ XMLMSG='Sorry, your browser doesn't support XML.' returnfalse; } if(xmlDoc.parseError.errorCode!=0)...{ XMLMSG+="<br/>Error Code: "; XMLMSG+=xmlDoc.parseError.errorCode; XMLMSG+="<br/>Error Reason: "; XMLMSG+=xmlDoc.parseError.reason; XMLMSG+="<br/>Error Line: "; XMLMSG+=xmlDoc.parseError.line; returnfalse; } _XML=xmlDoc.documentElement.xml; var xmlNodes=xmlDoc.documentElement.childNodes; debug.innerHTML+='<hr><font color="#ff0000">'; return getAT(xmlNodes); }