.stringify メソッドを使用して JSON 文字列に簡単に変換できる多次元 Javascript オブジェクトがあります。同様のことを行う関数を作成しようとしていますが、XML、マークアップ、形式です。問題は、任意の数の次元を処理できるようにしたいということです。
次のような値を持つ多次元オブジェクトがあるとします。
object['annualrevenues']['option0']['ID'] = 1;
object['annualrevenues']['option0']['text'] = '$50mil';
object['annualrevenues']['option1']['ID'] = 2;
object['annualrevenues']['option1']['text'] = '$100mil';
object['annualrevenues']['option2']['ID'] = 3;
object['annualrevenues']['option2']['text'] = '$200mil';
次のような文字列を作成したい:
var xmlText = <xml><annualrevenues><option0><ID>1</ID><text>$50</text></option0></annualrevenues></xml>
contentType 'XMLDOC' で応答として返されると、次のようになります。
<xml>
<annualrevenues>
<option0>
<ID>1</ID>
<text>$50</text>
</option0>
</annualrevenues>
</xml>
だから私は次の機能を持っています:
var xmlText = '<xml>';
xmlText += formatXMLSubObjects(objText,xmlText);
function formatXMLSubObjects(objText,xmlText){
for (prop in objText) {
if (typeof objText[prop] == 'object') {
xmlText += '<'+prop+'>';
for (subProp in objText[prop]) {
if (typeof objText[prop][subProp] == 'object') {
// Run the function again as recursion
xmlText += formatXMLSubObjects(objText[prop][subProp],xmlText);
}
else {
xmlText += '<' + subProp + '>' + objText[prop][subProp] + '</' + subProp + '>';
}
}
xmlText += '</'+prop+'>';
}
else {
xmlText += '<'+prop+'>'+objText[prop]+'</'+prop+'>';
}
}
return xmlText;
}
問題は、formatXMLSubObjects 関数が 2 番目の呼び出しから戻るときに、最初の呼び出しの元のオブジェクトが上書きされ、未定義になっていることです。
これを手伝ってくれる人はいますか?