Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 14-03-2006, 13:12   #1 (permalink)
Flash it baby!
 
Registriert seit: Feb 2003
Beiträge: 287
Question XML-Daten durchsuchen

Hallo Leute,

irgendwie stehe ich gerade auf dem Schlauch. Ich hab folgendes Script:

PHP-Code:
XML.prototype.find = function(whichvalue) {
    var 
result = [];
    var 
resulttemp = [];
    var 
error false;
    switch (
which) {
    case 
"NodeName" :
        if (
this.nodeName == value) {
            
result.push(this);
        }
        break;
    case 
"NodeValue" :
        if (
this.nodeValue == value) {
            
result.push(this);
        }
        break;
    case 
"AttributeName" :
        if (
this.attributes[value] != null) {
            
result.push(this);
        }
        break;
    case 
"AttributeValue" :
        for (var 
i in this.attributes) {
            if (
this.attributes[i] == value) {
                
result.push(this);
            }
        }
        break;
    default :
        
trace("wrong value="+which);
        
error true;
    }
    
trace(this.childNodes[0].find);
    if (!
error) {
        for (var 
0i<this.childNodes.lengthi++) {
            
resulttemp this.childNodes[i].find(whichvalue);// <--hier
            
while (resulttemp.length>0) {
                
result.push(resulttemp.split());
            }
        }
        return 
result;
    }
};
meinXML = new XML("<test><xyz></xyz></test>");
abc=meinXML.find("NodeName""xyz");
trace("abc="+abc); 
Irgendwie wird die find-Methode beim 2. Aufruf (siehe "<-- hier") nicht gefunden. Da ich die Methode doch an das XML-Objekt gebunden habe, sollte das doch kein Problem sein oder?

Danke für Eure Hilfe!

Geändert von Da_Judge (15-03-2006 um 10:52 Uhr)
Da_Judge ist offline   Mit Zitat antworten
Alt 14-03-2006, 13:46   #2 (permalink)
ActionScriptler
 
Benutzerbild von .:morpher:.
 
Registriert seit: Jun 2002
Ort: auheim
Beiträge: 1.654
sehe ich richtig, dass du in deiner function "find", die Funktion selbst benutzt?
__________________
CU @ MY SITE

FOLLOW ME ON TWITTER
.:morpher:. ist offline   Mit Zitat antworten
Alt 14-03-2006, 13:58   #3 (permalink)
Flash it baby!
 
Registriert seit: Feb 2003
Beiträge: 287
Ja sozusagen eine rekursive Funktion...
Da_Judge ist offline   Mit Zitat antworten
Alt 14-03-2006, 14:03   #4 (permalink)
ActionScriptler
 
Benutzerbild von .:morpher:.
 
Registriert seit: Jun 2002
Ort: auheim
Beiträge: 1.654
würde das dann nicht in einer eindlosschleife enden?
__________________
CU @ MY SITE

FOLLOW ME ON TWITTER
.:morpher:. ist offline   Mit Zitat antworten
Alt 14-03-2006, 14:21   #5 (permalink)
Flash it baby!
 
Registriert seit: Feb 2003
Beiträge: 287
In dem Fall wird ja die nächste find-Funktion nur aufgerufen, wenn auch weitere Unterknoten existieren: i<this.childNodes.length
Wenn also die Länge gleich 0 ist, dann wird sie nicht mehr aufgerufen.
Da_Judge ist offline   Mit Zitat antworten
Alt 14-03-2006, 14:24   #6 (permalink)
ActionScriptler
 
Benutzerbild von .:morpher:.
 
Registriert seit: Jun 2002
Ort: auheim
Beiträge: 1.654
natürlich
__________________
CU @ MY SITE

FOLLOW ME ON TWITTER
.:morpher:. ist offline   Mit Zitat antworten
Alt 14-03-2006, 15:08   #7 (permalink)
Flash it baby!
 
Registriert seit: Feb 2003
Beiträge: 287
...jetzt brauche ich immer noch eine Lösung für mein Problem
Da_Judge ist offline   Mit Zitat antworten
Alt 14-03-2006, 15:09   #8 (permalink)
°.oO°O.o°.oO.o°O
 
Benutzerbild von bamboocha
 
Registriert seit: Jun 2005
Ort: CH
Beiträge: 1.490
Vlt. Typenkonflikt!?
__________________
There is no way to happiness, happiness is the way! - Buddha
bamboocha ist offline   Mit Zitat antworten
Alt 14-03-2006, 16:23   #9 (permalink)
Flash it baby!
 
Registriert seit: Feb 2003
Beiträge: 287
Zitat:
Zitat von bamboocha
Vlt. Typenkonflikt!?
wie meinst Du das? Wenn man sich gleichzeitig zum 2. Aufruf der find-Funktion trace(this.childNodes[i].find); ausgeben läßt, erscheint "undefined". Es scheint also die Funktion dort nicht zu existieren...
Da_Judge ist offline   Mit Zitat antworten
Alt 15-03-2006, 09:35   #10 (permalink)
helpQLODhelp
 
Benutzerbild von bokel
 
Registriert seit: Feb 2002
Ort: Köln
Beiträge: 8.505
Prüf mal den Typ des Objekts mit instanceof
mfg. r
bokel ist offline   Mit Zitat antworten
Alt 15-03-2006, 10:03   #11 (permalink)
Flash it baby!
 
Registriert seit: Feb 2003
Beiträge: 287
Hi bokel,

danke, dass Du Dich meinem Problem widmest, ich hab schon gedacht, ich muß dumm sterben

Also geteste habe ich in der find-Methode wie folgt:
PHP-Code:
trace(this instanceof XML);// true
trace(this.childNodes[0] instanceof XML);// false 
Das habe ich ja eigentlich auch schon erwartet, allerdings ist mir nicht klar, warum das so ist. meinXML ist ja ein XML-Objekt, gehören dann die Unterknoten nicht auch automatisch zum XML-Objekt? Müßte ich dann jedes this.childNodes[i] = new XML(); setzen?!
Kann man das besser lösen?

Danke für Deine Hilfe!
Da_Judge ist offline   Mit Zitat antworten
Alt 15-03-2006, 10:11   #12 (permalink)
helpQLODhelp
 
Benutzerbild von bokel
 
Registriert seit: Feb 2002
Ort: Köln
Beiträge: 8.505
Was gibt es denn noch alles für Objekte, die mit XML zu tun haben?
mfg. r
bokel ist offline   Mit Zitat antworten
Alt 15-03-2006, 10:19   #13 (permalink)
Flash it baby!
 
Registriert seit: Feb 2003
Beiträge: 287
???
entweder stehe ich jetzt auf dem Schlauch oder ich weiß nicht was Du meinst...
Da_Judge ist offline   Mit Zitat antworten
Alt 15-03-2006, 10:23   #14 (permalink)
helpQLODhelp
 
Benutzerbild von bokel
 
Registriert seit: Feb 2002
Ort: Köln
Beiträge: 8.505
Schau mal in die ActionScript Referenz unter X.
mfg. r
bokel ist offline   Mit Zitat antworten
Alt 15-03-2006, 10:56   #15 (permalink)
Flash it baby!
 
Registriert seit: Feb 2003
Beiträge: 287
Tja in Flash MX gehört das wohl zum undokumentierten Teil, habs aber dann in der Referenz in der neueren Version gefunden: XMLNode

=>
PHP-Code:
XMLNode.prototype.find = function(whichvalue) {...} 
Danke!
Da_Judge 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 13:53 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele