Aby wyświetlić same wartości każdego elementu naszej struktury pliku XML, który jest pokazany poniżej:
<ksiazka>
<tytul>Moja ksiazka</tytul>
<cena waluta="PLN">20</cena>
</ksiazka>
<ksiazka>
<tytul>Moja ksiazka numer 2</tytul>
<cena waluta="USD">99</cena>
</ksiazka>
</wszystkie>
Wystarczy użyć pętli for each po wczytaniu pliku, która jest pokazana poniżej:
trace (dane+" "+dane..@waluta);
}
Zauważmy, że nie odnosimy się do pliku XML bezpośrednio, czyli "in zawartosc" ale przez odwołanie się do elementu i na jego podstawie wyświetlamy dane, jeśli pętlę byśmy zmienili na wspomnianą "in zawartosc" wtedy wyświetlona by została cała zawartość elementu <wszystkie> razem ze znacznikami XML. Również wystąpił by błąd podczas debungowania, ponieważ nie mamy w znaczniku <wszystkie> parametru WALUTA.
Do wartości tagów w pętlach odnosimy sie odrazu po przez:
zawartosc.ksiazka.tytul
lub do jednego wpisu:
zawartosc.ksiazka.tytul[0]
Do paramatrów w pętlach odnosimy sie poprzez nazwe tagu w jakim sie znajdują potem ..@ znaczki oraz nazwe parametru
zawartosc.ksiazka.cena..@waluta
lub dla pojedynczego wpisu:
zawartosc.ksiazka.cena..@waluta[0]
Cały kod ActionScript 3 do wczytywania zewnętrznego pliku "plik.xml" jest podany poniżej w dwóch wersjach:
package {
import flash.display.*;
import flash.events.*;
import flash.net.*;
public class Wczytywanie_XML extends Sprite {
private var zawartosc:XML;
private var urlLoader:URLLoader;
public function Wczytywanie_XML() {
var urlRequest:URLRequest = new URLRequest("plik.xml");
urlLoader = new URLLoader();
urlLoader.addEventListener(Event.COMPLETE, zaladowano);
urlLoader.load(urlRequest);
}
private function zaladowano(e:Event) {
zawartosc = new XML(urlLoader.data);
trace ("=========== Odwołanie się do 1 pozycji ==========");
trace (zawartosc.ksiazka.tytul[0]);
trace (zawartosc.ksiazka.cena[0]+" - "+zawartosc.ksiazka.cena..@waluta[0]);
trace ("=========== Owołanie się do wszystki pozycji ==========");
for each (var dane:XML in zawartosc.ksiazka.*) {
trace (dane+" "+dane..@waluta);
}
trace ("========= Funkcje.net ==========");
}
}
}
Listing
Ranga: Administrator serwisu Punktów: 0