2015-01-08 2 views
1

Я знаю, что это глупая проблема, но я не могу ее решить часами.Где вернуть результат рекурсивной функции

У меня есть рекурсивную функцию, которая принимает объект JSON и создает XML-строку:

function JSONtoXML(object, xml) { 
    var name = ''; 
    for (var prop in object) { 
     if (object.hasOwnProperty(prop)) { 
      if (typeof object[prop] === 'object'){ 
       JSONtoXML(object[prop], xml); 
      } 
      else { 
       if (prop === 'name') { 
        name = object[prop]; 
        xml += '<' + name; 
       } 
       else if (prop === 'version') { 
        xml += ' version="' + object[prop] + '">\n<params>\n'; 
       } 
       else if (prop === 'value') { 
        xml += '>' + object[prop] + '</' + name + '>'; 
       } 
       else { 
        xml += ' ' + prop + '="' + object[prop] + '"'; 
       } 
      } 
     } 
    } 
}; 

Я хотел бы, если бы я мог бы просто вернуть строку XML, когда функция заканчивается, но я понятия не имею, где писать return xml; часть. В любом месте, где я указываю, он возвращает только часть строки.

+0

Я предлагаю U это: http://goessner.net/download/prj/jsonxml/ –

ответ

3

удалить XML, как Parametr

function JSONtoXML(object) { 
    var name = ''; 
    var xml = ''; 
    for (var prop in object) { 
     if (object.hasOwnProperty(prop)) { 
      if (typeof object[prop] === 'object'){ 
       xml += JSONtoXML(object[prop]); 
      } 
      else { 
       if (prop === 'name') { 
        name = object[prop]; 
        xml += '<' + name; 
       } 
       else if (prop === 'version') { 
        xml += ' version="' + object[prop] + '">\n<params>\n'; 
       } 
       else if (prop === 'value') { 
        xml += '>' + object[prop] + '</' + name + '>'; 
       } 
       else { 
        xml += ' ' + prop + '="' + object[prop] + '"'; 
       } 
      } 
     } 
    } 

    return xml; 
}; 
2
function JSONtoXML(object, xml) { 
    var name = ''; 
    for (var prop in object) { 
     if (object.hasOwnProperty(prop)) { 
      if (typeof object[prop] === 'object'){ 
       JSONtoXML(object[prop], xml); 
      } 
      else { 
       if (prop === 'name') { 
        name = object[prop]; 
        xml += '<' + name; 
       } 
       else if (prop === 'version') { 
        xml += ' version="' + object[prop] + '">\n<params>\n'; 
       } 
       else if (prop === 'value') { 
        xml += '>' + object[prop] + '</' + name + '>'; 
       } 
       else { 
        xml += ' ' + prop + '="' + object[prop] + '"'; 
       } 
      } 
     } 
    } 

    return xml;// Here return the result 
}; 

Возвращение, если вы сделали processig! то есть до закрытия функции в этом случае.

Смежные вопросы