Stortingsvalg - Eksamen V2009

Eksempel på bruk av XML

H-P Ulven, 26.04.13

Se side 271, 272 og 273 i PiAS!

I alle eksemplene under skal vi liste ut all informasjonen i en datastruktur

omtrent slik:

Spørsmål nr:     1

Spørsmål:        Hvilket parti osv...

   Alternativ nr 0: H

   Alternativ nr 1: Frp

   Alternativ nr 2: SV

Media:           solberg.jpg

Fasit:           0
Spørsmål nr:     2

Spørsmål:        Spill av lydkuttet. Hvem hører du?

   Alternativ nr 0: KM Bondevik

   Alternativ nr 1: D Høybråten

   Alternativ nr 2: L Sponheim

Media:           hoybraten.mp3

Fasit:           1
Spørsmål nr:     3

Spørsmål:        Spill av intervjuet du ... osv 

   Alternativ nr 0: H og Frp

   Alternativ nr 1: H, Krf og V

   Alternativ nr 2: H, Krf, V og S

Media:           stoltenberg.flv

Fasit:           1

Først som array med objekter (assosiativt array):

var quizarray: Array = 

[

   {  sporsmal:   "Hvilket parti osv...",

      media:      "solberg.jpg",

      alternativ: ["H", "Frp", "SV" ],

      fasit:      0

   },



   {  sporsmal:   "Spill av lydkuttet. Hvem hører du?",

      media:      "hoybraten.mp3",

      alternativ: ["KM Bondevik","D Høybråten","L Sponheim" ],

      fasit:      1

   },



   {  sporsmal:   "Spill av intervjuet du ... osv ",

      media:      "stoltenberg.flv",

      alternativ: ["H og Frp", "H, Krf og V", "H, Krf, V og S"],

      fasit:      1

   }

];



/// --- Lister ut all info i tabellen --- ///
for(i = 0; i < quizarray.length; i++) {

   trace("Spørsmål nr:     " + (i+1) );

   trace("Spørsmål:        " + quizarray[i].sporsmal);

   for(j = 0; j < quizarray[i].alternativ.length; j++){

      trace("   Alternativ nr " + j + ": " + quizarray[i].alternativ[j]);

   }//for j

   trace("Media:           " + quizarray[i].media);

   trace("Fasit:           " + quizarray[i].fasit);

}//for i

Tilsvarende med tabellen laget som XML variabel direkte i RAM:

var quizxml: XML =

   <quiz>

      <data>

         <sporsmal> Hvilket parti osv...</sporsmal>

         <media>solberg.jpg</media>

         <alternativ>H</alternativ>

         <alternativ>Frp</alternativ>

         <alternativ>SV</alternativ>

         <fasit>0</fasit>

      </data>

	  

      <data>

         <sporsmal> Spill av lydkuttet. Hvem hører du?</sporsmal>

         <media>hoybrate.mp3</media>

         <alternativ>K M Bondevik</alternativ>

         <alternativ>D Høybråten</alternativ>

         <alternativ>L Sponheim</alternativ>

         <fasit>1</fasit>

      </data>

	  

      <data>

         <sporsmal>Spill av intervjuet du ... osv</sporsmal>

         <media>stoltenberg.flv</media>

         <alternativ>H og Frp</alternativ>

         <alternativ>H, Krf og V</alternativ>

         <alternativ>H, Krf, V og S</alternativ>

         <fasit>1</fasit>

      </data>

   </quiz> ;
trace("Viser hele xml-fil (debug): ");

trace(quizxml);
trace("\n");

/// --- Lister ut all info i tabellen --- ///

for(i = 0; i < quizxml.data.length(); i++) {

   trace("Spørsmål nr:     " + (i+1) );

   trace("Spørsmål:        " + quizxml.data[i].sporsmal);

   for(j = 0; j < quizxml.data[i].alternativ.length(); j++){

      trace("   Alternativ nr " + j + ": " + quizxml.data[i].alternativ[j]);

   }//for j

   trace("Media:           " + quizxml.data[i].media);

   trace("Fasit:           " + quizxml.data[i].fasit);

}//for i

Tilsvarende med tabellen lagret som XML i ekstern fil quiz_xml.xml:

(Filen kan du skrive i NotePad og lagre som quiz_xml.xml istedenfor quiz_xml.txt.)

<quiz>

   <data>

      <sporsmal> Hvilket parti osv...</sporsmal>

      <media>solberg.jpg</media>

      <alternativ>H</alternativ>

      <alternativ>Frp</alternativ>

      <alternativ>SV</alternativ>

      <fasit>0</fasit>

   </data>
   <data>

      <sporsmal> Spill av lydkuttet. Hvem hører du?</sporsmal>

      <media>hoybraten.mp3</media>

      <alternativ>K M Bondevik</alternativ>

      <alternativ>D Høybråten</alternativ>

      <alternativ>L Sponheim</alternativ>

      <fasit>1</fasit>

   </data>
   <data>

      <sporsmal>Spill av intervjuet du ... osv</sporsmal>

      <media>stoltenberg.flv</media>

      <alternativ>H og Frp</alternativ>

      <alternativ>H, Krf og V</alternativ>

      <alternativ>H, Krf, V og S</alternativ>

      <fasit>1</fasit>

   </data>

</quiz>

I dette tilfellet må filen lastes med en URLLoader og lage en lytter-funksjon som ikke blir kjørt før filen er ferdig lagt inn i hukommelsen:

var url: URLRequest = new URLRequest("quiz_valg.xml");   // Filen
var loader: URLLoader = new URLLoader();                 // Loader (som lyd)
loader.load(url);	                                       // Vi laster filen inn i RAM
loader.addEventListener(Event.COMPLETE,xmlLastet);      // Kjører lytterfunksjon når filen er klar
/// --- Lister ut all info i tabellen --- ///
function xmlLastet(evt: Event): void {

   var quizxml: XML = new XML(loader.data);

   for(i = 0; i < quizxml.data.length(); i++) {

      trace("Spørsmål nr:     " + (i+1) );

      trace("Spørsmål:        " + quizxml.data[i].sporsmal);

      for(j = 0; j < quizxml.data[i].alternativ.length(); j++){

         trace("   Alternativ nr " + j + ": " + quizxml.data[i].alternativ[j]);

      }//for j

      trace("Media:           " + quizxml.data[i].media);

      trace("Fasit:           " + quizxml.data[i].fasit);

   }//for i

}//xmlLastet()