Inhalte aus XML-File einlesen

intercorni

Erfahrenes Mitglied
Hallo,

ich habe leider noch so meine Probleme damit, ein XML-File in Flash auszugeben.
Hier das XML-File in vereinfachter Form:
Code:
<?xml version='1.0' encoding='utf-8'?>
<inhalts_resources>
    <resource type="inhalt">
        <inhalt>Inhalt1</inhalt>      
    </resource>
</willkommen_resources>
<willkommen_resources>
    <resource type="willkommen">
        <inhalt>Herzlich Willkommen</inhalt>      
    </resource>
</willkommen_resources>

Im Flash-Movie habe ich auf der Hauptzeitleiste eine ScrollPaine-Komponente "box_inhalt",
sowie in der Bibliothek einen exportierbaren MC "LClip".
Nun soll
Code:
meinXML.childNodes[1].childNodes[0].attributes.inhalt
also der Willkommens-Text in den MC "LClip" und
dieser wiederum in die ScrollPaine geladen werden, undzwar ohne Button, einfach durch
das Abspielen des Flash-Movies.
Dazu muss ich noch Sagen, dass in der ScrollPaine nachfolgend weitere Texte aber auch Bilder eingeladen werden. Darum also die Entscheidung für die ScrollPaine.

Wie kann ich das machen?
 
PHP:
<?xml version='1.0' encoding='utf-8'?>
<inhalts_resources>
    <resource type="inhalt">
        <inhalt>Inhalt1</inhalt>      
    </resource>
</inhalts_resources>
<willkommen_resources>
    <resource type="willkommen">
        <inhalt>Herzlich Willkommen</inhalt>      
    </resource>
</willkommen_resources>

Mit </> schliest du ein Knoten und den sollte man natürlich erst nach dem öffnen an die richtige stelle setzen!

Das ist die simpeltse Methode wie du ein XML gestalten kannst:
PHP:
<?xml version"1.0"?>

<Texte>

<text name="News"  
	inhalt="das sind die news"></text >

<text name="Begrüssung" 
	inhalt="das ist die Begrüssung"></text >

</Texte>

Mit Flash kannst du jetzt in einer for-Schleife das XML auslesen.Also erst das XML laden:

PHP:
var nameXML = "http://www.deineurl.de/xml/dein.xml";
mein_xml = new XML();
mein_xml.ignoreWhite = true;
mein_xml.load(nameXML);
Jetzt brauchst du noch eine Abfrage ob das XML forhanden ist:
PHP:
mein_xml.onLoad = function(ok) {
	if (ok && this.loaded) {
		anzahl = mein_xml.firstChild.childNodes.length;//so viele Knoten hat dein XML
		xmlAuswerten(anzahl);//funktion aufrufen und anzahl übergeben
                trace("meinXML: "+mein_xml)
	}
};
zum auslesen brauchst du wie gesagt eine for-Schleife wenn dein inhalt richtig dynamisch sein soll.
PHP:
xmlAuswerten = function (anzahl) {
	this.createEmptyMovieClip("text_mc", 1);
        for (i=0; i<anzahl; i++) {
                text ="text"+i;
                this.text_mc[text].createEmptyTextField("name",1)//nich getested
                this.text_mc[text].createEmptyTextField("inhalt",1)//""
		this.text_mc[text].name= mein_xml.firstChild.childNodes[i].attributes.name;
		this.text_mc[text].inhalt = mein_xml.firstChild.childNodes[i].attributes.inhalt
                trace("Name"+i+": "+this.text_mc[text].name+"Inhalt"+i+": "+this.text_mc[text].inhalt)
}
};


alternatiev kannst du die for schleife auch weg lassen.
PHP:
trace("knoten 1/name: "+mein_xml.firstChild.childNodes[0].attributes.name)
trace("knoten 1/inhalt: "+mein_xml.firstChild.childNodes[0].attributes.inhalt)
trace("knoten 2/name: "+mein_xml.firstChild.childNodes[1].attributes.name)
trace("knoten 2/inhalt: "+mein_xml.firstChild.childNodes[1].attributes.inhalt)
PS: Knoten 1: ist eigentlich 0 hört sich aber doof an ;)
habs nicht getested also wenns nicht funktioniert erst die schreibweis testen

Gruß
 
Danke für die Erklärungen, ich muss mir das in Ruhe "einverleiben" :-)
Habe ich in meinem XML-Beispiel zu viele Verknotungen generiert?
Du gehts ja einen etwas anderen Weg bzw. vereinfachst dabei das XML-File.
Cornel
 
Zuletzt bearbeitet:
Zurück