Diese Anzeige ist nur für
Nicht-Mitglieder sichtbar!

Jetzt kostenlos registrieren

XML-Verarbeitung klappt nicht

Fragen zum Thema Flash können hier gestellt werden

Moderatoren: Basti, Ulli H.

XML-Verarbeitung klappt nicht

Beitragvon HelenInTrouble am 24.08.2010, 17:49

Hallo!

Ich versuche mit ActionScript eine XML-Datei auszulesen (was auch funktioniert) und zu verarbeiten. Leider liefert mir meine Klasse immer null als Wert.
Geb ich die Variable aber in der Klasse selbst aus, stimmt der Inhalt.
Woran liegt das?

Hier der Code der Klasse:

Code: Alles auswählen
package com {
       
    import flash.display.MovieClip;
    import flash.net.URLLoader;
    import flash.events.Event;
    import flash.net.URLRequest;       
       
    public class readXMLFile {
               
        private var contentXMLUrl:String = "myxml.xml";
        public var XMLContent:XMLList;
               
        public function readXMLFile() {
            var xmlLoader:URLLoader = new URLLoader();
            xmlLoader.addEventListener(Event.COMPLETE, XMLloaded);
            xmlLoader.load(new URLRequest(contentXMLUrl));
        }
               
        private function XMLloaded(e:Event):void {
            var XMLRes:XML = new XML(e.currentTarget.data);
            XMLRes.ignoreWhite = true;
            // nur Elementbaum mit "myElements"
            this.XMLContent = XMLRes.myElements;
            // gibt mir die XMLListe aus - das klappt hier
            trace(this.XMLContent);
        }               
    }       
}


So wird die Klasse aufgerufen:

Code: Alles auswählen
import com.readXMLFile;

var foo:readXMLFile = new readXMLFile();
// hier bekomme ich null als Wert
trace(foo.XMLContent);


Die Reihenfolge der Ausgaben ist auch so, dass das zweite trace() vor der Ausgabe in der Klasse ausgeführt wird.
Das zweite trace wird also ausgeführt bevor die Klasse die XML-Datei verarbeiten konnte.
Wie schaff ich, dass mir die XML-Liste ausserhalb der Klasse zur Verfügung steht? Wo liegt hier mein Fehler?

Danke und Grüße
HelenInTrouble
Mitglied
 
Beiträge: 5
Registriert: 24.08.2010, 17:36
Diese Anzeige ist nur für
Nicht-Mitglieder sichtbar!
 
Jetzt kostenlos registrieren

Re: XML-Verarbeitung klappt nicht

Beitragvon Ulli H. am 24.08.2010, 22:54

Ich würde mal stark vermuten, dass du da lediglich einen Pfadfehler hast. Allerdings kommt bei mir auch kein Wert in der Klasse



Kannst du auch mal die betreffende XML posten?
Ich möchte wie mein Opa im Schlaf sterben und nicht heulend und schreiend wie sein Beifahrer.

Mentalisten sprechen Rabisch und sprengen den Geist
Fundamentalisten sprechen Arabisch und sprengen sich selbst

Von O. Kalkofe über die Urin Kellner Show
Benutzeravatar
Ulli H.
Moderator
 
Beiträge: 1054
Registriert: 11.04.2007, 21:52
Wohnort: Ludwigsburg

Re: XML-Verarbeitung klappt nicht

Beitragvon HelenInTrouble am 25.08.2010, 03:28

Hi Ulli!

Also an der XML liegt es nicht. Ich krieg sie ja ausgegeben, nur halt nicht an der richtigen Stelle ;)
Als Beispiel reicht
Code: Alles auswählen
<?xml version="1.0" encoding="utf-8"?>
    <playlist>
        <myElements name="first">
            <image>1.jpg</image>
        </myElements>
        <myElements name="second">
            <image>2.jpg</image>
        </myElements>
    </playlist>


Ich habe im Internet kein Beispiel gefunden welches so vorgeht wie ich es angefangen habe.
Sämtliche Beispiele arbeiten nachgeladene Dateien vollständig ab. Es gibt also nie einen Rückgabewert der ein nachgeladenes Element enthält. Eine andere Lösung habe ich nicht gefunden :(

Vllt. hast du noch eine Idee.
HelenInTrouble
Mitglied
 
Beiträge: 5
Registriert: 24.08.2010, 17:36

Re: XML-Verarbeitung klappt nicht

Beitragvon Ravelution am 26.08.2010, 11:14

hi

hab änliches problem gehabt und folgendermaasen ist es gelöst worden

Code: Alles auswählen
package com {
    import flash.events.EventDispatcher;
    import flash.display.MovieClip;
    import flash.net.URLLoader;
    import flash.events.Event;
    import flash.net.URLRequest;       
       
    public class readXMLFile extends EventDispatcher {
               
        private var contentXMLUrl:String = "myxml.xml";
        public var XMLContent:XMLList;
               
        public function readXMLFile() {
            var xmlLoader:URLLoader = new URLLoader();
            xmlLoader.addEventListener(Event.COMPLETE, XMLloaded);
            xmlLoader.load(new URLRequest(contentXMLUrl));
        }
               
        private function XMLloaded(e:Event):void {
            var XMLRes:XML = new XML(e.currentTarget.data);
            XMLRes.ignoreWhite = true;
            // nur Elementbaum mit "myElements"
            this.XMLContent = XMLRes.myElements;
            // gibt mir die XMLListe aus - das klappt hier
            trace(this.XMLContent);
            dispatchEvent(new Event(Event.COMPLETE));
        }               
    }       
}

Die klasse liest alles ein aber dieses teil des codes kriegt es nicht mit wann es soweit bzw. vollständig eingelesen worden ist , deswegen auch müssen wir diesen event dispatchen, damit das ganze funktioniert unbedingt erben von EventDipatscher und natürlich die klasse importieren.
der aufruf selber sollte dann folgendermassen aussehen
Code: Alles auswählen
import com.readXMLFile;
var foo:readXMLFile = new readXMLFile();
foo.addEventListener(Event.COMPLETE,xmlComplete);

// hier bekomme ich null als Wert
function xmlComplete(e:Event):void {
        trace(foo.XMLContent);
}



ich hoffe, ich konnte weiter helfen
Ravelution
Bild
Ravelution
Mitglied
 
Beiträge: 4
Registriert: 05.07.2010, 15:43

Re: XML-Verarbeitung klappt nicht

Beitragvon HelenInTrouble am 27.08.2010, 15:33

Hey Ravelution!

Herzlichen Dank, klappt prima! Daran hab ich mir wirklich lange den Kopf zerbrochen.

Beste Grüße!
HelenInTrouble
Mitglied
 
Beiträge: 5
Registriert: 24.08.2010, 17:36


Zurück zu Flash

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste