xml to flash

Samy-Deluxe

Erfahrenes Mitglied
Hallo, ich wollte mal Wissen. Wie ich diesen XML code in flash in variablen erscheinen lassen kann.
PHP:
<news>
<news id="1"  user="DMX"  title="Webtemplet" datum="12.04.2006 09:23:52">
hier die NEWS
</news>
<news id="2"  user="DMX"  title="Webtemplet" datum="15.04.2006 09:23:52">
hier die NEWS
</news>
</news>
Ich habe hier ein par Tutorials versucht, doch ohne erfolg.
Hatte das am schluss so hier im AS

PHP:
on (release) {
var newss;
news = new XML();
news.onLoad = loadVars;
news.load("news.xml"); //Lädt das XML-Dokument
function loadVars(success) {
	if (success) { 
var item = news.firstChild.firstChild; 
while (item != null) { 
newss = newss+' \n \n Name: '+eval(item.attributes.user)+' Title: '+eval(item.attributes.title)+' Datum: '+eval(item.attributes.datum)+"\n "+eval(item);
item = item.nextSibling; 
} } 
_root.mainText.text = newss;
}}

Doch alle infos werden als UNDEFINED dargestellt
 
Zuletzt bearbeitet:
Hi,

Auf den ersten Blick kann ich ein paar kleinere Unstimmigkeiten entdecken, aber am schnellsten würde es wohl gehen, wenn Du Deine .fla und die dazugehörige XML-Datei einmal postest.

Gruß
.
 
Ich habe da noch Text Scroll Buttons rein gemacht

PHP:
on (Press) {
	_root.mainText.scroll--;
}
Doch ich wollte, dass wenn man Button gedrückt hält, es immer weiter runter oder hoch gescrollt wird
 
Hi,

  • Was sollen die zusätzlichen "news"-Tags um die einzelnen Einträge in der xml-Datei? Ich habe die einmal entfernt, so dass die Datei nun so aussieht:
Code:
<news id="1"  user="DMX"  title="Webtemplet" datum="12.04.2006 09:23:52">
	hier die NEWS
</news>
<news id="2"  user="DMX"  title="Webtemplet" datum="15.04.2006 09:23:52">
	hier die NEWS
</news>
  • "Template" schreibt sich mit "ate", nicht mit "et". ;)

  • Die von Dir verwendeten Komponenten-Buttons reagieren nicht auf der Ereignis "onRelease", sondern auf "click". Die Funktion zum Laden und Anzeigen würde ich auf die Hauptzeitleiste auslagern, so dass der Code auf der Buttoninstanz nun so aussieht:
Code:
on(click) {
	_root.showXML1();
}
  • Auf der Hauptzeitleiste (mach Dir am besten eine neue Ebene nur für Code) kannst Du die Daten nun z.B. so einladen:
Code:
function showXML1() {
	var newss;
	var news = new XML();
	news.onLoad = function(success) {
		if (success) {
			parse(this);
		} else {
			_root.mainText.text = "Ladefehler";
		}
	}
	news.load("news.xml");
	function parse(obj) {
		obj = obj.childNodes;
		var ostr = "";
		for (var i=0; i<obj.length; i++) {
			trace(obj[i]);
			ostr += "  Name: " + obj[i].attributes.user;
			ostr += " Title: " + obj[i].attributes.title;
			ostr += " Datum: " + obj[i].attributes.datum;
			ostr += chr(13) + obj[i].firstChild;
			ostr += chr(13) + chr(13);
		}
		_root.mainText.text = ostr;
	}
}
Statt eine "while"-Schleife zu verwenden, kannst Du die Anzahl der Nachrichten einfach aus der Länge des entsprechenden "childNodes"-Objektes auslesen und eine "for"-Schleife verwenden. Die Funktion "eval" brauchst Du nicht; sie dient dazu, aus Zeichenketten gültige Referenzen auf Objekte zu bekommen (meist reicht allerdings der Array-Zugriffsoperator aus) und hat an dieser Stelle nichts verloren. ;)

Zu Deiner zweiten Frage: Wenn Du möchtest, dass eine Aktion immer wieder ausgeführt wird (meist in der Frequenz der Framerate), solltest Du Dir mal die Funktionen "onEnterFrame" und "setInterval" anschauen. Zu beiden Begriffen wirst Du auch hier im Forum jede Menge Material und Anleitungen finden.

Gruß
.
 
es kommt ein fehler
seh selbst jede 2te wird null
Name: DMX Title: Webtemplate Datum: 12.04.2006 09:23:52
hier die NEWS

Name: undefined Title: undefined Datum: undefined
null

Name: DMX Title: Webtemplate Datum: 15.04.2006 09:23:52
hier die NEWS

Name: undefined Title: undefined Datum: undefined
null

Name: DMX Title: Webtemplate Datum: 15.04.2006 09:23:52
hier die NEWS
dabei gibt es nur 3 einträge :rolleyes:
 
Hi,

dann hast Du wahrscheinlich etwas an der xml-Datei geändert (etwa doch doppelte news-Tags?).

Poste bitte mal Deine aktuelle xml-Datei.

Gruß
.
 
news.xml
PHP:
<news id="1"  user="DMX"  title="Webtemplate" datum="12.04.2006 09:23:52">
	hier die NEWS
</news>
<news id="2"  user="DMX"  title="Webtemplate" datum="15.04.2006 09:23:52">
	hier die NEWS
</news>
<news id="3"  user="DMX"  title="Webtemplate" datum="15.04.2006 09:23:52">
	hier die NEWS
</news>
 
Sorry, mein Fehler:

Setze folgendes:
Code:
news.ignoreWhite = true;
unter die Zeile, in der das xml-Objekt definiert wird:
Code:
var news = new XML();
Ansonsten werden die Zeilenumbrüche (Whitespaces) als weitere Knoten interpretiert.

Tipp: Packe den News-Inhalt in CharacterData-Tags:
Code:
<![CDATA[hier die NEWS]]>
, sonst bekommst Du Probleme, wenn Du Zeichen wie "<" ">" oder Anführungsstriche verwendest. Diese werden dann in "Entitäten" umgewandelt: "&lt;" "&gt;" und "&quot;". Um die Zeichen in Flash wieder richtig darzustellen suche hier im Forum nach "parseET" - diese Funktion wandelt html-Entitäten in ihre druckbaren Pendants um.

Gruß
.
 
Zurück