ActionScript 3, анализирующий XML-данные

Мой флэш-код

var myLoader:URLLoader = new URLLoader;
var xmlData = new XML();

myLoader.addEventListener(Event.COMPLETE, LoadXML);

myLoader.load(new URLRequest("mydata.xml"));

function LoadXML(e:Event):void
{
  xmlData = new XML(e.target.data);

  trace(xmlData);
}

Мои XML-данные (mydata.xml)

<xml>
  <items>
     <item Name="Test" ID="1" />
     <item Name="Home" ID="2" />
     <item Name="Car" ID="3" />
     <item Name="Balloon" ID="4" />
     <item Name="Harry" ID="5" />
     <item Name="Lion" ID="6" />
  </items>
</xml>

Как я могу получить каждый элемент в файле xml, чтобы затем использовать его в моем файле флэш-памяти.

Я пробовал несколько вещей, но ни одна из них не работает. Я использую ActionScript 3.0.


person Nathan Stanford    schedule 21.09.2010    source источник


Ответы (2)


Используя E4X, вы можете перебирать каждый элемент в вашем XML

for each (var item:XML in xmlData.items.item) {
 trace(item.@Name, item.@ID);
}
person Patrick    schedule 21.09.2010
comment
Я не получаю ошибку, используя это, но я не получаю никаких элементов трассировки. Что я могу делать неправильно. Я скопировал то, что у вас есть. - person Nathan Stanford; 21.09.2010

Я изменил его на этот xmlData..item, и это сработало. Кто-нибудь знает, почему?

for each (var item:XML in xmlData..item) { 
 trace(item.@Name, item.@ID); 
} 
person Nathan Stanford    schedule 21.09.2010
comment
ваши узлы xml действительно такие, как в вашем примере? если нет, он ничего не отследит, но если вы сделаете xmlData..item, он будет искать в любом месте вашего XML, чтобы найти узел «item», а не только из items.item. Моя версия более строгая и уважаю только ваш пример. - person Patrick; 21.09.2010
comment
Вот почему я задавался вопросом, что я мог делать неправильно. Я решил, что ваш ответ был правильным. Ваш ответ имеет смысл. - person Nathan Stanford; 21.09.2010