AS3 создать XML основной вопрос - PullRequest
2 голосов
/ 15 ноября 2010

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

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

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

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);
   }

Я хочу получить желаемый результат:

    <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!Любой совет высоко ценится.

Ответы [ 2 ]

1 голос
/ 15 ноября 2010

Я только что добавил этот код в пустой 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);

Ответ, который я получил, был:

<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>

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

1 голос
/ 15 ноября 2010

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

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);
}
...