2010-11-15 3 views
2

Хотя у меня нет проблем с анализом входящего XML, я не могу построить корректный исходящий XML. Это мой код:as3 create xml basic question

myXML = 
    <INFO> 
    <imgname>testimage.jpg</imgname> 
    <totalCols>{totalCols}</totalCols> 
    </INFO>; 

// XML, до этого момента следов желаемого результата, это когда я пытаюсь добавить с цикл, что проблемы возникают:

for (var i:Number = 0; i<totalCols; i++) 
    { 
    var tags:XML = 
    <tags> 
    <tagx> {tagDisplay[i].x} </tagx> 
    <tagy> {tagDisplay[i].y} </tagy> 
    <tagtext> {tagDisplay[i].tagTxt.text} </tagtext> 
    </tags>; 

    myXML.appendChild(tags); 
    } 

Нужного выход I хочу:

<INFO> 
    <imgname>testimage.jpg</imgname> 
    <totalCols>7</totalCols> 
//for loop kicks in here: 
    <tags> 
    <tagx>100</tagx> 
    <tagy>100</tagy> 
    <tagtext>tag1</tagtext> 
    </tags> 
    <tags> 
    <tagx>120</tagx> 
    <tagy>120</tagy> 
    <tagtext>tag2</tagtext> 
    </tags> 
...etc for the total number in the for loop. 
    </INFO> 

Действительно простой я знаю, но мой код просто не работает с включенным циклом for! Любые советы очень ценятся.

+0

Бах, люди говорят вам, чтобы вырезать это и использовать строковые манипуляции. Игнорируй их. Твой путь лучше. –

ответ

1

я не вижу никаких причин, чтобы использовать подстановку здесь, простые задания красиво и ясно:

for (var i:Number = 0; i < totalCols; i++) { 
    var tags:XML = <tags></tags>; 
    tags.tagx = tagDisplay[i].x; 
    tags.tagy = tagDisplay[i].y; 
    tags.tagtext = tagDisplay[i].tagTxt.text; 
    myXML.appendChild(tags); 
} 
+0

Спасибо, это сработало! – daxski

1

Я просто добавил этот код на пустой FLA:

var totalCols:Number = 4; 
var tagDisplay:Array = [ 
    {x:0, y:0, tagTxt:{text:"stuff"}}, 
    {x:0, y:0, tagTxt:{text:"stuff"}}, 
    {x:0, y:0, tagTxt:{text:"stuff"}}, 
    {x:0, y:0, tagTxt:{text:"stuff"}} 
]; 

var myXML:XML = 
    <INFO> 
    <imgname>testimage.jpg</imgname> 
    <totalCols>{totalCols}</totalCols> 
    </INFO>; 

for (var i:Number = 0; i<totalCols; i++) 
{ 
    var tags:XML = 
    <tags> 
    <tagx> {tagDisplay[i].x} </tagx> 
    <tagy> {tagDisplay[i].y} </tagy> 
    <tagtext> {tagDisplay[i].tagTxt.text} </tagtext> 
    </tags>; 

    myXML.appendChild(tags); 
} 

trace(myXML); 

Отклик I получено:

<INFO> 
    <imgname>testimage.jpg</imgname> 
    <totalCols>4</totalCols> 
    <tags> 
    <tagx>0</tagx> 
    <tagy>0</tagy> 
    <tagtext>stuff</tagtext> 
    </tags> 
    <tags> 
    <tagx>0</tagx> 
    <tagy>0</tagy> 
    <tagtext>stuff</tagtext> 
    </tags> 
    <tags> 
    <tagx>0</tagx> 
    <tagy>0</tagy> 
    <tagtext>stuff</tagtext> 
    </tags> 
    <tags> 
    <tagx>0</tagx> 
    <tagy>0</tagy> 
    <tagtext>stuff</tagtext> 
    </tags> 
</INFO> 

Я думаю, что это именно то, что вы хотите, не так ли? Я не изменил ваш код, кроме некоторого ввода.

+0

Ну, это интересно ... это, вероятно, означает, что мои переменные не инициализируются должным образом. Я посмотрю привет. – daxski