Zurück   Flashforum > Flash und Server > Flash mit XML und Webservices

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 22-02-2011, 09:27   #1 (permalink)
Rock'n'Bass
 
Benutzerbild von <sVkVmVit>
 
Registriert seit: Feb 2006
Ort: Hamburg
Beiträge: 202
Question XML-Elemente zählen klappt nicht :(

Hallo,

ich habe folgendes Problem:
Ich erstelle in Flash gerade eine Seite zur Präsentation von einigen Produkten. Nun habe ich eine XML-Datei, aus der ich Daten über das Produkt in Flash rein laden lasse (Titel, Fakten und Beschreibung). Insgesamt sind 5 Produkte aus der XML-Datei zu lesen.

An der Stelle des AS-Codes in Flash, wo die anzahl der Produkte ermittelt wird, die sich in der XML-Datei befinden (siehe Code unten), frage ich per trace genau diese Anzahl ab. Nur komischerweise zählt es nur 1 (!) Element! Dabei sind es doch 5! ... WO IST HIER DER FEHLER?? (vielleicht bin ich auch einfach nur blind gerade... )

- - - - - -

XML-File:
Code:
<?xml version='1.0' encoding='utf-8'?>

  <knoten>
    <kindknoten 
	 prtitel="Produkt 1" 
     facts="Fakten zu Produkt 1" 
	 beschr="Beschreibung zu Produkt 1" />
  </knoten>
  <knoten>
    <kindknoten 
	 prtitel="Produkt 2" 
     facts="Fakten zu Produkt 2" 
	 beschr="Beschreibung zu Produkt 2" />
  </knoten>
  <knoten>
    <kindknoten 
	 prtitel="Produkt 3" 
     facts="Fakten zu Produkt 3" 
	 beschr="Beschreibung zu Produkt 3" />
  </knoten>
  <knoten>
    <kindknoten 
	 prtitel="Produkt 4" 
     facts="Fakten zu Produkt 4" 
	 beschr="Beschreibung zu Produkt 4" />
  </knoten>
  <knoten>
    <kindknoten 
	 prtitel="Produkt 5" 
     facts="Fakten zu Produkt 5" 
	 beschr="Beschreibung zu Produkt 5" />
  </knoten>
Flash AS-Code auf Frame 1:
Code:
stop();

var XMLpopup = new XML();
XMLpopup.ignoreWhite=true;
XMLpopup.load("XMLpopup.xml");
XMLpopup.onLoad = function(success) {

anzahl = XMLpopup.firstChild.childNodes.length;
trace(anzahl);

XMLpopup_prtitel = [];
XMLpopup_facts = [];
XMLpopup_beschr = [];
	for (var i=0; i<anzahl; i++) {
		XMLpopup_prtitel[i] = XMLpopup.firstChild.childNodes[i].attributes.prtitel;
		XMLpopup_facts[i] = XMLpopup.firstChild.childNodes[i].attributes.facts;
		XMLpopup_beschr[i] = XMLpopup.firstChild.childNodes[i].attributes.beschr;
		}
		gotoAndStop(2);
	}
__________________
==>remix.nin.com<==
//
Life Is Too Short For Boring Music!
Fantasie ist die einzige Waffe gegen die Wirklichkeit.

Geändert von <sVkVmVit> (22-02-2011 um 09:29 Uhr)
<sVkVmVit> ist offline   Mit Zitat antworten
Alt 22-02-2011, 09:33   #2 (permalink)
Inventar
 
Benutzerbild von Nightflyer
 
Registriert seit: Jul 2002
Beiträge: 6.882
mach um deine Knoten mal noch ein Tag drumherum z.B.
Code:
<test>
    <knoten>
         <kindknoten />
    </knoten>
    <knoten>
         <kindknoten />
    </knoten>
    <knoten>
         <kindknoten />
    </knoten>
</test>
__________________
(\__/)
(='.'=)
(")_(")
Nightflyer ist offline   Mit Zitat antworten
Alt 22-02-2011, 09:47   #3 (permalink)
Rock'n'Bass
 
Benutzerbild von <sVkVmVit>
 
Registriert seit: Feb 2006
Ort: Hamburg
Beiträge: 202
Thumbs up

Oh.. okay es funktioniert! zumindest wird per trace jetzt 5 ausgegeben, wie es sein soll. Dann sollte ich ja jetzt auch alle Elemente des XML in Flash ansprechen können. War also nur ne Verschachtelungssache, okay.

VIELEN DANK dir schonmal!
__________________
==>remix.nin.com<==
//
Life Is Too Short For Boring Music!
Fantasie ist die einzige Waffe gegen die Wirklichkeit.
<sVkVmVit> ist offline   Mit Zitat antworten
Alt 22-02-2011, 09:53   #4 (permalink)
Inventar
 
Benutzerbild von Nightflyer
 
Registriert seit: Jul 2002
Beiträge: 6.882
DuU hast versucht mit

firstChild.childNodes

auf die Elemente zuzugreifen obwohl du kein firstCild hattest ( daher "knoten" war dein firstChild und "kindknoten" deine childNodes mit Anzahl eben = 1 ). Alternativ wäre aber

childNodes

alleine auch gegangen.
__________________
(\__/)
(='.'=)
(")_(")

Geändert von Nightflyer (22-02-2011 um 09:55 Uhr)
Nightflyer ist offline   Mit Zitat antworten
Alt 22-02-2011, 10:05   #5 (permalink)
Rock'n'Bass
 
Benutzerbild von <sVkVmVit>
 
Registriert seit: Feb 2006
Ort: Hamburg
Beiträge: 202
Lightbulb

ah genau, das wäre dann noch meine ergänzende frage gewesen, wie ich es sonst gelöst hätte. stimmt, hast recht. macht auf jeden fall sinn jetzt.
ist ja auch immer besser, gleich genau zu wissen, wieso es nicht geklappt hat, damit mans nächstes mal schneller erfasst.

in diesem sinne nochmals danke für die ergänzende erklärung.
__________________
==>remix.nin.com<==
//
Life Is Too Short For Boring Music!
Fantasie ist die einzige Waffe gegen die Wirklichkeit.
<sVkVmVit> ist offline   Mit Zitat antworten
Alt 22-02-2011, 10:35   #6 (permalink)
Rock'n'Bass
 
Benutzerbild von <sVkVmVit>
 
Registriert seit: Feb 2006
Ort: Hamburg
Beiträge: 202
Unhappy

Ööööhm... leider gibt's noch ein weiteres Problemchen.. hab eben son paar Sachen versucht, aber irgendwie ist da noch was falsch. :/

Wollte mal zum test unten nochmal per trace das Titel-Array ausgeben lassen und er wirft aus: "undefined, undefined, undefined, undefined, undefined"
okay 5 elemente ist richtig, aber wieso findet er die Titel nicht??

Code:
var XMLpopup = new XML();
XMLpopup.ignoreWhite=true;
XMLpopup.load("XMLpopup.xml");
XMLpopup.onLoad = function(success) {
anzahl = XMLpopup.firstChild.childNodes.length;

trace(anzahl);

XMLpopup_prtitel = [];
XMLpopup_facts = [];
XMLpopup_beschr = [];
	for (var i=0; i<anzahl; i++) {
		XMLpopup_prtitel[i] = XMLpopup.firstChild.childNodes[i].attributes.prtitel;
		XMLpopup_facts[i] = XMLpopup.firstChild.childNodes[i].attributes.facts;
		XMLpopup_beschr[i] = XMLpopup.firstChild.childNodes[i].attributes.beschr;
		}
		
                trace(XMLpopup_prtitel);
		
                gotoAndStop(2);
	}
__________________
==>remix.nin.com<==
//
Life Is Too Short For Boring Music!
Fantasie ist die einzige Waffe gegen die Wirklichkeit.

Geändert von <sVkVmVit> (22-02-2011 um 10:38 Uhr)
<sVkVmVit> ist offline   Mit Zitat antworten
Alt 22-02-2011, 11:17   #7 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 6.164
Zitat:
Zitat von <sVkVmVit> Beitrag anzeigen
Wollte mal zum test unten nochmal per trace das Titel-Array ausgeben lassen und er wirft aus: "undefined, undefined, undefined, undefined, undefined"
okay 5 elemente ist richtig, aber wieso findet er die Titel nicht??
Das liegt daran, dass die Attribute (aus welchen Gründen auch immer) nicht zum <knoten> sondern zum <kindknoten> gehören und den würdest Du so ansprechen:
PHP-Code:
XMLpopup_prtitel[i] = XMLpopup.firstChild.childNodes[i].firstChild.attributes.prtitel
Ich finde Deine Benennung übrigens etwas unglücklich! Verwende für Deine Nodes Namen, die deren Inhalt und Funktion beschreiben (z.B. <produkt>) und nicht einfach nur wiedergeben, was eh offensichtlich ist!
__________________
Viele Grüße // Martin

Martin Kraft // Interaktionsdesign

Hilfreiche Websites:
// Hilfe zur Adobe Flash Plattform
// ActionScript 2 Referenz
// ActionScript 3 Referenz
// ActionScript 3 Arbeitshandbuch
// weitere Flash Ressourcen

Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da!
Martin Kraft ist offline   Mit Zitat antworten
Alt 22-02-2011, 11:25   #8 (permalink)
Rock'n'Bass
 
Benutzerbild von <sVkVmVit>
 
Registriert seit: Feb 2006
Ort: Hamburg
Beiträge: 202
Thumbs up

Yeah super!
Okay danke, jetzt funzt alles so wie es soll. Hab bereits an der richtigen Stelle angesetzt, aber mir ist in dem Moment "firstChild" nicht eingefallen.. manchmal hat man einfach n Brett vorm Kopf. Und ja ich sollte das ganze vllt nochmal etwas vereinfachen.

Und das mit der Benennung, das ist jetzt eh nur erstmal zum Test, die Knoten benenne ich auf jeden Fall noch passend - jetzt wo alles läuft kann ich das ja eben mal machen.

Alles klar, also danke euch beiden nochmal für die schnellen Antworten! Hat mir echt geholfen!

GreeZ !
Nils
__________________
==>remix.nin.com<==
//
Life Is Too Short For Boring Music!
Fantasie ist die einzige Waffe gegen die Wirklichkeit.
<sVkVmVit> ist offline   Mit Zitat antworten
Alt 22-02-2011, 12:45   #9 (permalink)
Rock'n'Bass
 
Benutzerbild von <sVkVmVit>
 
Registriert seit: Feb 2006
Ort: Hamburg
Beiträge: 202
Post

Ich denke für die, die das hier jetzt nachträglich noch lesen, sollte ich einmal den verbesserten und korrekten Code posten.
Also hier mein aktuelles XML-File und der aktuelle AS-Code dazu:

XML:
Code:
<?xml version='1.0' encoding='utf-8'?>
  
  <seite>
    <produkt 
	 prtitel="Produkt 1" 
         facts="Fakten zu Produkt 1" 
	 beschr="Beschreibung zu Produkt 1" />
    <produkt 
	 prtitel="Produkt 2" 
         facts="Fakten zu Produkt 2" 
	 beschr="Beschreibung zu Produkt 2" />
    <produkt 
	 prtitel="Produkt 3" 
         facts="Fakten zu Produkt 3" 
	 beschr="Beschreibung zu Produkt 3" />
    <produkt 
	 prtitel="Produkt 4" 
         facts="Fakten zu Produkt 4" 
	 beschr="Beschreibung zu Produkt 4" />
    <produkt 
	 prtitel="Produkt 5" 
         facts="Fakten zu Produkt 5" 
	 beschr="Beschreibung zu Produkt 5" />
  </seite>
AS:
Code:
var XMLpopup = new XML();
XMLpopup.ignoreWhite=true;
XMLpopup.load("XMLpopup.xml");
XMLpopup.onLoad = function(success) {
anzahl = XMLpopup.firstChild.childNodes.length;
XMLpopup_prtitel = [];
XMLpopup_facts = [];
XMLpopup_beschr = [];
    for (var i=0; i<anzahl; i++) {
        XMLpopup_prtitel[i] = XMLpopup.firstChild.childNodes[i].attributes.prtitel;
	XMLpopup_facts[i] = XMLpopup.firstChild.childNodes[i].attributes.facts;
	XMLpopup_beschr[i] = XMLpopup.firstChild.childNodes[i].attributes.beschr;
	}
    trace("Produkttitel im XML: "+XMLpopup_prtitel);
    gotoAndStop(2);
    }
__________________
==>remix.nin.com<==
//
Life Is Too Short For Boring Music!
Fantasie ist die einzige Waffe gegen die Wirklichkeit.

Geändert von <sVkVmVit> (22-02-2011 um 12:50 Uhr)
<sVkVmVit> 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


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
push ...array elemente zählen?? mathiregister Flash Einsteiger 2 05-06-2008 10:06
XML aus Textdatei klappt. XML aus php klappt nicht! ?? yaga Flash MX 1 01-08-2006 00:44
Array gleiche Elemente zählen harego ActionScript 1 4 22-10-2005 14:58
OT-Posts nicht zählen gloeckle Fragen, Konstruktive Kritik, Lob 19 30-07-2002 14:59
ich kann nicht zählen!!! Dennis Flash 4 und Flash 5 2 21-10-2001 19:28


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:14 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele