Zurück   Flashforum > Flash > ActionScript > ActionScript 2

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 18-06-2007, 21:38   #1 (permalink)
Neuer User
 
Registriert seit: Jun 2007
Beiträge: 20
XML Verarbeitung

Hallo Gemeinde

Ich habe ein Problem beim verarbeiten eines XMLs. Ich lade das XML, nur kann ich danach auf keines der Nodes, Childs oder deren Values zugreifen, ich bekomme einfach keine Werte aus dem XML gelesen.

Hier das XML (heißt "audience.xml") :

Code:
<?xml version="1.0" encoding="UTF-8"?>
<audience>
	<link id="admin">
		<url>admin.html</url>
		<target>_TOP</target>
	</link>
	<link id="faq">
		<url>faq.html</url>
		<target>_SELF</target>
	</link>
	<link id="web">
		<url>web.html</url>
		<target>_PARENT</target>
	</link>
	<link id="php">
		<url>php.html</url>
		<target>_BLANK</target>
	</link>
</audience>
und das ActionScript dazu:

Code:
var MyVars:XML = new XML();
MyVars.load("./audience.xml");

trace("Nodes: " + MyVars.childNodes.length );

MyVars.onLoad = function() {
	// Define Vars
	var MyAdmin = MyVars.firstChild.childNodes[0];
	var MyFaq   = MyVars.firstChild.childNodes[1];
	var MyWeb   = MyVars.firstChild.childNodes[2];
	var MyPhp   = MyVars.firstChild.childNodes[3];
	
	admin_trg = MyAdmin.childNodes[1].nodeValue;
	admin_wdo = MyAdmin.childNodes[2].nodeValue;
	faq_trg = MyFaq.childNodes[1].nodeValue;
	faq_wdo = MyFaq.childNodes[2].nodeValue;
	web_trg = MyWeb.childNodes[1].nodeValue;
	web_wdo = MyWeb.childNodes[2].nodeValue;
	php_trg = MyPhp.childNodes[1].nodeValue;
	php_wdo = MyPhp.childNodes[2].nodeValue;
}
Leider sind alle Variablen welche in der onLoad Funktion definere "undefined". Ein trace -auf welchen Node auch immer- bringt immer die Meldung "undefined". So bringt auch der oben stehende Trace als Ausgabe "Nodes : 0"

Beim debuggen des SWFs kann ich aber erkennen das er das XML vollständig einliest.

Wer kann helfen?
Quasimorrow ist offline   Mit Zitat antworten
Alt 18-06-2007, 22:25   #2 (permalink)
Euer Nuser
 
Benutzerbild von ~pyropete~
 
Registriert seit: Apr 2004
Ort: Sand-City
Beiträge: 3.483
So:

ActionScript:
  1. // Define Vars
  2. var MyAdmin = this.firstChild.childNodes[0].nodeValue;

Geändert von ~pyropete~ (18-06-2007 um 22:28 Uhr)
~pyropete~ ist offline   Mit Zitat antworten
Alt 18-06-2007, 22:57   #3 (permalink)
Neuer User
 
Registriert seit: Jun 2007
Beiträge: 20
Hi pyropete.

Leider kein Erfolg. Ein Zugriff über das Schema

Code:
        trace("Values: " + MyVars.firstChild.childNodes[0].nodeValue);
bringt wieder als Ergebniss "undefined".

Wenn ich in der Flash-Hilfe nachlese finde ich ein kleines Beispiel welches mir alle Nodes im XML durchläuft uns ausgibt:

Code:
if (MyVars.firstChild.hasChildNodes()) {
	// use firstChild to iterate through the child nodes of rootNode
        for (var aNode:XMLNode = MyVars.firstChild.firstChild; aNode != null; aNode=aNode.nextSibling) {
        if (aNode.nodeType == 1) {
            trace(aNode.nodeName+":\t"+aNode.firstChild.nodeValue);
        }
    }
} else {
	trace("No Nodes found");
}
Ich bekomme: No Nodes found. Was also bedeuten würde das ich keine Nodes im XML habe. Aber die sind ja definitv da?!?
Quasimorrow ist offline   Mit Zitat antworten
Alt 19-06-2007, 07:49   #4 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.139
Du greifst auf die Daten zu, bevor diese Überhaupt geladen sind, deswegen bekommst du undefined.
ActionScript:
  1. var audienceArray:Array = new Array();
  2. var xml:XML = new XML();
  3. xml.ignoreWhite = true;
  4. xml.load("./audience.xml");
  5. xml.onLoad = function() {
  6.     for (var i:Number = 0; i<this.firstChild.childNodes.length; i++) {
  7.         var linkObject:Object = new Object();
  8.         linkObject["id"] = this.firstChild.childNodes[i].attributes["id"];
  9.         linkObject["url"] = this.firstChild.childNodes[i].childNodes[0].firstChild.nodeValue;
  10.         linkObject["target"] = this.firstChild.childNodes[i].childNodes[1].firstChild.nodeValue;
  11.         audienceArray[i] = linkObject;
  12.     }
  13.     startApplication(audienceArray);
  14. }
  15. function startApplication(audienceArray:Array):Void {
  16.     for (var i=0; i<audienceArray.length; i++) {
  17.         trace("Linkobject: "+i);
  18.         for (var j:String in audienceArray[i]) {
  19.             trace("\t"+j+": "+audienceArray[i][j]);
  20.         }
  21.     }
  22. }
Im Anhang eine schlankere XML, in der ich die Kindknoten <url /> und <target /> in attribute auslagerte um so etwas schöner die Objekte zu füllen.
Angehängte Dateien
Dateityp: zip audience.zip (5,3 KB, 8x aufgerufen)
Omega Psi ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 12:47 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele