Zurück   Flashforum > Flash > Stuff

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 04-04-2005, 15:53   #1 (permalink)
Rübennase
 
Benutzerbild von thomiko
 
Registriert seit: Dec 2003
Ort: Niederrhein
Beiträge: 291
[stuff] XML vollständig in normales Objekt "umwandeln"

Hallo Leute,

ich habe eine AS 2.0-Klasse geschrieben, mit der ein XML-Objekt (egal welcher Tiefe und Verzweigungskomplexität!) vollständig rekursiv in ein normales Objekt abgebildet wird, so dass man dann ganz einfach auf die einzelnen XML-Knoten zugreifen kann.
Es können im XML-Objekt mehrere Geschwister-Knoten mit dem gleichen Namen vorkommen. Attribute werden allerdings derzeit nicht erfasst, allerdings lassen sich ja Attribute vom XML-Autor jederzeit in Elemente umwandeln.
Ich habe es nicht mit XML-Daten mit gemischtem Content ...
HTML-Code:
<description>Beschreibung
	<item>Hauptteil</item>
</description>
... getestet, da es für mich nicht wichtig ist.

Sicher gibt es ähnlichen Code schon irgendwo anders und ich behaupte nicht, dass mein Code besonders originell ist und die kürzeste Fassung für diese Aufgabenstellung darstellt. Ich habe ihn halt gestern für mich geschrieben und wenn jemand anderes damit etwas anfangen kann, freut es mich!

Hier ein XML-Beispiel:
HTML-Code:
<?xml version="1.0" encoding="UTF-8"?>
<slide>
	<title>
		<screen_width>800</screen_width> <!-- Bsp. 1 -->
		<screen_height>600</screen_height>
		<logo>
			<url>ca.jpg</url>
			<x_pos>20</x_pos>
			<y_pos>20</y_pos>
			<description>
				<item>Hauptteil</item> <!-- Bsp. 2 -->
				<item>Schluss</item>
			</description>
		</logo>
		<item>Hauptteil</item>
		<item>Schluss</item>
	</title>
	<list>
		<list_item>Einführung</list_item>
		<list_item>Hauptteil</list_item>
		<list_item>Schluss</list_item> <!-- Bsp. 3 -->
		<list_item>Ausblick</list_item>
	</list>
</slide>
Wenn man nun die AS-Klasse folgendermaßen aufruft ...
PHP-Code:
var fc:String "firstChild";
data_xml = new XML();
data_xml.ignoreWhite true;
data_xml.load("snippet.xml");
data_xml.onLoad = function(success) {
    if (
success) {
        var 
data_obj = new Object();
        
data_obj XMLReader.getObj(this[fc]);
    }
}; 
... dann erreicht man die Werte derjenigen XML-Zeilen in obigem Beispiel, an deren Ende ein Kommentar steht, folgendermaßen:
PHP-Code:
trace("Bsp.1: " data_obj["title"]["screen_width"]);
trace("Bsp.2: " data_obj["title"]["logo"]["description"]["item0"]);
trace("Bsp.3: " data_obj["list"]["list_item2"]); 
Die AS-Klasse und das XML-Beispiel findet ihr in der ZIP-Datei. Ich habe ein paar Kommentare eingefügt. Fragt wenn 'was nicht klar ist.

Hat jemand Lust, für die Flash MX-Jünger die AS 2.0-Klasse in einen Prototypen zu konvertieren?

Gruß,

Thomas

Geändert von thomiko (05-04-2005 um 00:58 Uhr)
thomiko ist offline   Mit Zitat antworten
Alt 05-04-2005, 01:00   #2 (permalink)
Rübennase
 
Benutzerbild von thomiko
 
Registriert seit: Dec 2003
Ort: Niederrhein
Beiträge: 291
Hallo Leute,

leider habe ich noch einen kleinen Bug entdeckt, sorry!

Die Änderungen betreffen nur die Funktion simplifyObj.
In der ersten Version wurden in dieser Funktion ungewollt die Elemente data_obj["title"]["logo"]["x_pos"], data_obj["title"]["logo"]["y_pos"] und data_obj["title"]["logo"]["url"] von dem Objekt data_obj["title"]["logo"]["description"] eliminiert.
Jetzt sind alle Elemente erreichbar!

Gruß,

Thomas
Angehängte Dateien
Dateityp: zip XMLReader.zip (2,1 KB, 37x aufgerufen)
thomiko 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 18:44 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele