---
title: "hämta info från XML"
type: "forum-thread"
url: "https://www.webforum.nu/amne/flash/66948-hämta-info-från-xml"
topic: "Flash"
topic_url: "https://www.webforum.nu/amne/flash"
author: "roady"
published: "2003-02-02T14:50:49.000Z"
updated: "2006-11-16T14:34:37.000Z"
replies: 10
views: 650
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/flash/66948-hämta-info-från-xml"
---

# hämta info från XML

## #1 — roady, 2003-02-02T14:50Z

Jag söker, letar och bläddrar men hittar inga bra svar  :( 
Jag vill att man skall klicka på en knapp i flash och då läsa in just den informationen från en xml fil.

**XML-filen:** Information.xml

```
<?xml version="1.0" encoding="iso-8859-1"?>
<info>
	<photo>
		<london name="London.jpeg" size="103kb" load="case/photo_london.swf">Bilderna är blandade från när jag var i london över nyår 2000 och när jag hälsade på en vän våren 2001.</london>
		<modell name="Modell.jpeg" size="151kb" load="case/photo_modell.swf">De första sju bilderna har jag tagit på fritid och lite till bilduppgifter när jag läste fotografi. De sista tog jag till Falkenbergs kommun i två olika arbeten.</modell>
	</photo>
	<knowledge>
		<grafit name="Grafit.info" size="103kb" load="case/knowledge_grafit.swf"></grafit>
	</knowledge>
</info>
```

jag har delat upp så jag har 2 st swf filer, en som är för att ladda in photo och en för att ladda in knowledge. Ifall vi exempelvis är i den för att ladda in foton så kan en knapp se ut såhär:

```
on (release) {
 showCase("london","information.xml");
}
```

och då ser scripten ut såhär för den swf-filen:

```
// Funktion för knapparna att få tillgång till XML-filen
function showCase(infoName,fileName) {
	var infoName;
	var fileName;
	
	
	myInfo 			= new XML(); // skapa ett xml-objekt
	myInfo.onLoad 	= newInfo;  // kör funktionen efter inladdning
	
	
	myInfo.ignoreWhite = true;	// fixa alla blanksteg
	myInfo.load(fileName);		// ladda in xmlfilen
	
	// funktion för att komma till root och childnodes
	function newInfo() {
		// loopar igenom xmlfilen för att se med childNodes.length hur många child nodes där är
		for (var count1=0; count1<=models.childNodes.length; count1++) {
			// hämta den "grupp" som man vill ha
			if (this.childNodes[count1].nodeName.toLowerCase() == "photo") {
				// lägg alla childNodes i en variabel
				infoDescription = this.childNodes[count1];
				}
		}

        // skicka variablen till nästa funktion för att plocka ur enskild node
		getInfo(infoDescription);	
}

// hämta ut specifik node och visa infon i flash
function getInfo(myInfo) {
	var myInfo;
	
	for (var count2=0; count2<=myInfo.childNodes.length; count2++) {
		if (myInfo.childNodes[count2].nodeName.toLowerCase() == infoName) {
			infoDescription = myInfo.childNodes[count2].firstChild;
			// Nu har vi fått tag på den node som vi vill ha
			
			_root.load_meny.show_text.text = infoDescription;								// här hämtar vi infon i noden
			_root.load_meny.show_headline.text = myInfo.childNodes[count2].attributes.name;	// Här hämtar vi attributet "name"
			_root.load_meny.show_size.text = myInfo.childNodes[count2].attributes.size;		// Här hämtar vi attributet "size"
			pic = myInfo.childNodes[count2].attributes.load;								// Här hämtar vi attributet "load"
			
			loadMovie(pic,"_root.load_show");//we load the swf into an empty MC
  		   }
	   }
   }
}
```

problemet nu är att ingenting händer. får varken någon fel i output fönstret eller att infon visas i mina textfält...  :(

Permalänk: https://www.webforum.nu/p/66948

## #2 — Rödalacket, 2003-02-03T01:44Z

Kanske är det nått sånt här du är ute efter...
<http://www.lns.nu/wf/roady/roady.html>
Filerna ligger där också.
<http://www.lns.nu/wf/roady/> :)

Permalänk: https://www.webforum.nu/p/936589

## #3 — roady, 2003-02-03T09:54Z

Alltså..... du är ju hur grym som helst, nu blev jag jätteglad... \*bamsekramar\*

Permalänk: https://www.webforum.nu/p/936763

## #4 — Rödalacket, 2003-02-03T10:47Z

Det var så lite så... :)

Permalänk: https://www.webforum.nu/p/936808

## #5 — roady, 2003-02-07T11:58Z

efter en fin framgång med inläsandet av xml-info till flash så har det självklart dykt upp **problem igen**.

I detta (bläddra uppåt) inlägget så har jag haft 2 nodes (eller vad det nu heter (photo och knowledge))...

men nu uppstår problem när jag vill ha 5st.
\- \<flash\>
\+ \<photo\>...undernoder...\</photo\>
\+ \<knowledge\>...undernoder...\</knowledge\>
\+ \<case\>...undernoder...\</case\>
\+ \<music\>...undernoder...\</music\>
\+ \<contact\>...undernoder...\</contact\>
\</flash\>

Det är bara de 2 första som fungerar (kan flytta om ordningen så funkar fortfarande bara de 2 översta "noderna")
Den röda raden är där man ändrar för att hämta in den "nodens" info.
Knappen man trycker på för att få fram infon är fortfarande

```
on (release) {
 showCase("undernoden","information.xml");
}
```

Koden ser ut som såhär:

```
System.useCodePage = true;
// Funktion för knapparna att få tillgång till XML-filen
function showCase(infoName, fileName) {
	var infoName;
	var fileName;
	myInfo = new XML();// skapa ett xml-objekt
	myInfo.onLoad = newInfo;// kör funktionen efter inladdning
	myInfo.ignoreWhite = true;// fixa alla blanksteg
	myInfo.load(fileName);// ladda in xmlfilen
	
	// funktion för att komma till root och childnodes
	function newInfo() {
		// loopar igenom xmlfilen för att se med childNodes.length hur många child nodes där är
		for (var count1 = 0; count1 <= myInfo.childNodes.length; count1++) {
			
			// hämta den "grupp" som man vill ha
			[red]if (myInfo.firstChild.childNodes[count1].nodeName.toLowerCase() == "case")[/red] {
				// lägg alla childNodes i en variabel
				infoDescription = myInfo.firstChild.childNodes[count1];
			}
			
		}
		
		// skicka variablen till nästa funktion för att plocka ur enskild node
		getInfo(infoDescription);
		
	}
	// hämta ut specifik node och visa infon i flash
	function getInfo(myInfo) {
		var myInfo
		for (var count2 = 0; count2 <= myInfo.childNodes.length; count2++) {
			if (myInfo.childNodes[count2].nodeName.toLowerCase() == infoName) {
				infoDescription = myInfo.childNodes[count2].firstChild.toString();
				// Nu har vi fått tag på den node som vi vill ha
				var pos;
				while ((pos = infoDescription.indexOf("|")) >= 0) {
					infoDescription = infoDescription.substr(0, pos) + "\n" + infoDescription.substr(pos + 1, infoDescription.length);
				}
				
				//_root.load_meny.show_text.text = infoDescription;
				_root.load_meny.show_text.text = infoDescription;
				// här hämtar vi infon i noden
				_root.load_meny.show_headline.text = myInfo.childNodes[count2].attributes.name;
				// Här hämtar vi attributet "name"
				_root.load_meny.show_size.text = myInfo.childNodes[count2].attributes.size;
				// Här hämtar vi attributet "size"
				pic = myInfo.childNodes[count2].attributes.load;
				// Här hämtar vi attributet "load"
				loadMovie(pic, _root.load_show);
				//we load the swf into an empty MC
			}
		}
	}
}
```

Permalänk: https://www.webforum.nu/p/943063

## #6 — Rödalacket, 2003-02-07T23:29Z

Tror att det är här som den räknar fel

```
for (var count1 = 0; count1 <=[b]myInfo.childNodes.length[/b]; count1++) {
      // hämta den "grupp" som man vill ha
      if (myInfo.firstChild.childNodes[count1].nodeName.toLowerCase() == "case") {
           // lägg alla childNodes i en variabel
           infoDescription = myInfo.firstChild.childNodes[count1];
       }			
}
```

pröva med 

```
for (var count1 = 0; count1 <= myInfo.firstChild.childNodes.length; count1++) {
      // hämta den "grupp" som man vill ha
      if (myInfo.firstChild.childNodes[count1].nodeName.toLowerCase() == "case") {
          // lägg alla childNodes i en variabel
          infoDescription = myInfo.firstChild.childNodes[count1];
      }
}
```

Permalänk: https://www.webforum.nu/p/943552

## #7 — roady, 2003-02-08T11:06Z

ännu en gång kommer du ridandes som en riddare och räddar mig \*stor tack\* =)

Permalänk: https://www.webforum.nu/p/943683

## #8 — fumus, 2006-11-16T12:30Z

Flash 6 vs Flash 8

Använder mig av samma funktion som ovan, men får den endast att fungera i Flash 6 men inte i Flash 8. 
Någon som kan hjälpa/förklara varför?

Permalänk: https://www.webforum.nu/p/1899215

## #9 — mirandir, 2006-11-16T12:48Z

Mest troligt beror det på att Flash 8 Actionscript skiljer på små och stora bokstäver medans Flash 6 inte gör det.

/Mirandir

Permalänk: https://www.webforum.nu/p/1899218

## #10 — fumus, 2006-11-16T13:19Z

Förstår inte riktigt vad du menar?

När jag försöker att köra det i Flash 8, så får jag upp en ruta som säger att:

"A script is causing Flash Player to run slowly. if itcontinues to run, your computer may become unresponsive. Do you want to abort the script   YES  NO"

Men när jag kör det som F 6 så fungerar det hur bra som helst...

/Christer

Permalänk: https://www.webforum.nu/p/1899228

## #11 — fumus, 2006-11-16T14:34Z

Löste sig, jag som slarvat med vad jag kallat saker och ting... 

//Christer

Permalänk: https://www.webforum.nu/p/1899246

---

Tråden på webben: https://www.webforum.nu/amne/flash/66948-hämta-info-från-xml
