here is a problem in recursion: unexpected result ?
by this program I just want to convert xml dom's document object to xml-string.
(for all browsers)
[CODE=javascript] //load a xml
function loadXMLDoc(dnam e)
{
var xmlDoc;
// code for IE
if (window.ActiveX Object)
{
xmlDoc=new ActiveXObject(" Microsoft.XMLDO M");
}
// code for Mozilla, Firefox, Opera, etc.
else if (document.imple mentation && document.implem entation.create Document)
{
xmlDoc=document .implementation .createDocument ("","",null) ;
}
else
{
alert('Your browser cannot handle this script');
}
xmlDoc.async=fa lse;
xmlDoc.load(dna me);
return(xmlDoc);
}
//call on an event
function xmlString(xmlFi le){
var xmlDoc=loadXMLD oc(xmlFile);
var root=xmlDoc.doc umentElement;
var xml=getElement( root);
alert(xml);
}
//the parsing function: xml to string
function getElement(elem ent){
var str="";
if(element.node Type == 1){
str="<";
str+=element.no deName+" ";
if(element.hasA ttributes()){
var atts=element.at tributes;
for(a=0;a<atts. length;a++){
var att=atts.item(a );
str+=att.nodeNa me+"='"+att.nod eValue+"' ";
}
str+=">";
}
else{
str+=">";
}
if(element.hasC hildNodes()){
var len=element.chi ldNodes.length;
for(b=0;b<len;b ++){
//alert(element.c hildNodes[b].nodeName+' = '+len)
str+=getElement (element.childN odes[b]); //recursion here
}
}
str+="</"+element.nodeN ame+">";
}
else if(element.node Type == 3){
//alert(element.n odeValue)
str+=element.no deValue;
}
//alert(str);
return str;
}[/CODE]
above, root element is passed in getElement() function, if it has child elements then iterate all child elements and passed it to getElement() until it gets no child element. Each time getElement() return string (i.e node) which appends to the end of itself.
I'm just a beginner in web-development (only 6-month exp.).
by this program I just want to convert xml dom's document object to xml-string.
(for all browsers)
[CODE=javascript] //load a xml
function loadXMLDoc(dnam e)
{
var xmlDoc;
// code for IE
if (window.ActiveX Object)
{
xmlDoc=new ActiveXObject(" Microsoft.XMLDO M");
}
// code for Mozilla, Firefox, Opera, etc.
else if (document.imple mentation && document.implem entation.create Document)
{
xmlDoc=document .implementation .createDocument ("","",null) ;
}
else
{
alert('Your browser cannot handle this script');
}
xmlDoc.async=fa lse;
xmlDoc.load(dna me);
return(xmlDoc);
}
//call on an event
function xmlString(xmlFi le){
var xmlDoc=loadXMLD oc(xmlFile);
var root=xmlDoc.doc umentElement;
var xml=getElement( root);
alert(xml);
}
//the parsing function: xml to string
function getElement(elem ent){
var str="";
if(element.node Type == 1){
str="<";
str+=element.no deName+" ";
if(element.hasA ttributes()){
var atts=element.at tributes;
for(a=0;a<atts. length;a++){
var att=atts.item(a );
str+=att.nodeNa me+"='"+att.nod eValue+"' ";
}
str+=">";
}
else{
str+=">";
}
if(element.hasC hildNodes()){
var len=element.chi ldNodes.length;
for(b=0;b<len;b ++){
//alert(element.c hildNodes[b].nodeName+' = '+len)
str+=getElement (element.childN odes[b]); //recursion here
}
}
str+="</"+element.nodeN ame+">";
}
else if(element.node Type == 3){
//alert(element.n odeValue)
str+=element.no deValue;
}
//alert(str);
return str;
}[/CODE]
above, root element is passed in getElement() function, if it has child elements then iterate all child elements and passed it to getElement() until it gets no child element. Each time getElement() return string (i.e node) which appends to the end of itself.
I'm just a beginner in web-development (only 6-month exp.).
Comment