Zurück   Flashforum > Flash > ActionScript > Softwarearchitektur und Entwurfsmuster

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 25-01-2006, 11:45   #1 (permalink)
Neuer User
 
Registriert seit: May 2005
Beiträge: 46
AS XML 2 Object

hey leute,

kann mir vielleicht jemand eine gute AS2 XML 2 Object klasse empfehlen? ich hatte damals eine klasse von sepiroth genutzt gehabt... wenn ich diese jedoch als AS2 ins flash7 format aus der flash8 umgebung exportiere klappt das nicht mehr wirklich... ausserdem waren in der klasse auch einige kleinere bugs... daher meine frage: gibt es irgendwo ne gute AS2 klasse die mir ein xml dokument parsed und das ergebnis in ein object packt?

any ideas/hints,
flashnurde
flashnurde ist offline   Mit Zitat antworten
Alt 25-01-2006, 12:43   #2 (permalink)
Supermassive
 
Benutzerbild von elysian
 
Registriert seit: Aug 2004
Ort: Frankfurt, Bornheim
Beiträge: 861
xervus,

was verstehst du denn unter einem object?
wenn das xml mit hilfe der eingebauten xml-klasse geparst word, hast du doch ein xml-object!?

greetz, elysian.
__________________
Personal » amenity*blogging » elysian.de » Flexpertise - Enterprise Flex Collaboration
Networks » Xing » ColdFusion Community
Everything Cairngorm »
cairngormdocs.org

Geändert von elysian (25-01-2006 um 13:44 Uhr)
elysian ist offline   Mit Zitat antworten
Alt 25-01-2006, 13:10   #3 (permalink)
Neuer User
 
Registriert seit: May 2005
Beiträge: 46
ja schon klar...
was ich unter einem object verstehe ist, dass ich per punktnotation einfach auf die node bzw deren properties zugreifen kann:

zb
myObj.products.product[1].data
anstatt
mit firstChild, lastChild, nextSibling etc arbeiten zu muessen...

=)
flashnurde ist offline   Mit Zitat antworten
Alt 25-01-2006, 15:45   #4 (permalink)
Neuer User
 
Registriert seit: Oct 2002
Beiträge: 102
flashnurde, schaust du hier:

http://www.flashkit.com/movies/Scrip...7221/index.php

hatte das gleiche Problem und hab die Funktion genommen und etwas "aufgebohrt", so dass nun auch Bools, Zahlen und Strings richtig umgewandelt werden. Ebenso wird mit <html> markierter Text nicht weiter geparst. Des Weiteren werden bei mehreren identischen Nodes automatisch Arrays aufgebaut; wenn du einem node ein "id" Attribut mitgibst, wird dieser Array damit indiziert.

Hier ist die Funktion:

PHP-Code:
public function parse($node:XMLNode$object:Object):Object {
    if (
$object == null) {
        
$object = {};
    }
    
// convert attriubutes
    
for (var i in $node.attributes) {
        
// check if Attribute can be converted to a Number
        
var attr Number($node.attributes[i]);
        if (
attr eq NaN) {
            
// check if Attribute can be converted to a Boolean
            
switch (attr) {
            case 
"true" :
                
$object[i] = true;
                break;
            case 
"false" :
                
$object[i] = false;
                break;
            default :
                
// no, assign String
                
$object[i] = $node.attributes[i];
            }
        } else {
            
// yes, assign converted Number
            
$object[i] = attr;
        }
    }
    
//----- Build child nodes
    
for (var i in $node.childNodes) {
        
// Buffer Node and vars
        
var node $node.childNodes[i];
        var 
nName node.nodeName;
        var 
nType node.nodeType;
        
//
        // FILTERS START
        //
        // first, replace "." in Nodenames with "_"
        
nName nName.split(".").join("-");
        
// Filter HTML Code
        
if (nName == "html") {
            
$object.html node.childNodes.join("");
        } else {
            
// FILTERS END
            //
            // check Node Type
            
if (nType == 3) {
                
// content node
                
$object node.nodeValue;
            } else if (
nType == && nName != null) {
                
// Its a Node
                
var id node.attributes.id;
                if (!(
Number(ideq NaN) && id != undefined) {
                    
id Number(id);
                }
                if (
$object[nName] == null || id != undefined) {
                    
// ID Attribut exists ?
                    
if (id != undefined) {
                        
// id exists
                        
if ($object[nName] == undefined) {
                        
// generate array if there isn't one (first recursion)
                            
$object[nName] = new Array();
                        }
                        
// no longer needed
                        
delete node.attributes.id;
                        
// recurse with Array
                        
$object[nName][id] = parse(node, {});
                    } else {
                        
// recurse with Object
                        
$object[nName] = parse(node, {});
                    }
                    
// no id found, generate enumerated Array
                
} else if ($object[nName]._type != 'array') {
                    
// there is already another Entry there
                    
$object[nName] = [$object[nName]];
                    
$object[nName]._type 'array';
                }
                if (
$object[nName]._type == 'array') {
                    
// add new element
                    
$object[nName].unshift(parse(node, {}));
                }
            }
        }
    }
    
// delete Temp Variable
    
delete $object[nName]._type;
    
// Return Object
    
return $object;

Ich weiss nicht ob ich dafür jetzt einen Schönheitspreis bekomme, aber es funktionierte mit allem, was ich dieser Funktion zum Frass geworfen habe - es kammen immer hübsch strukturierte Objekte dabei raus

Bugreports, Optimierungen und Anregungen nehme ich aber trotzdem gerne entgegen

Frank Kudermann
---------------------------------------------------------------------------------------------
alphanull - büro für gestaltung
http://www.alphanull.de

Geändert von frankiee (25-01-2006 um 15:51 Uhr)
frankiee ist offline   Mit Zitat antworten
Alt 25-01-2006, 16:41   #5 (permalink)
-------------------------
 
Benutzerbild von Marpfei
 
Registriert seit: Jul 2002
Ort: Zürich
Beiträge: 159
XML2Obj von Sephiroth ist praktisch und hat mich noch nie im Stich gelassen. Schau dir mal die 'revisited' Version an.

www.sephiroth.it

mlg,
Markus

Geändert von Marpfei (25-01-2006 um 16:45 Uhr)
Marpfei 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 23:28 Uhr.

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


Copyright ©1999 – 2014 Marc Thiele