Zurück   Flashforum > Flash > ActionScript > ActionScript 3

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 02-12-2011, 23:51   #1 (permalink)
Neuer User
 
Registriert seit: Sep 2010
Beiträge: 112
Richtiges Auslesen von XML-Objekten mit length

Hallo zusammen,

das Auslesen von XML-Objekten via .length liefert bei folgender XML-Datei falsche Ergebnisse.

PHP-Code:
<?xml version="1.0" encoding="UTF-8"?>
<records>

    <record id="0" type="album">
        <myTitle>title</myTitle>
        <coverURL>inside_out_part1/inside_out_part1.jpg</coverURL>
        
            <visualTrack id="0">
                <position>1</position>
                <myTitle>title</myTitle>
                <trackURL>trtz</trackURL>
                <visualURL>rtzrt</visualURL>
            </visualTrack>
            <visualTrack id="1">
                <position>1</position>
                <myTitle>title</myTitle>
                <trackURL>trtz</trackURL>
                <visualURL>rtzrt</visualURL>
            </visualTrack>
    
    </record>
    
    <record id="1" type="album">
        <myTitle>title</myTitle>
        <coverURL>inside_out_part2/inside_out_part2.jpg</coverURL>
    
            <visualTrack id="0">
                <position>1</position>
                <myTitle>title</myTitle>
                <trackURL>rtzr</trackURL>
                <visualURL>rtr</visualURL>
            </visualTrack>
    
    </record>
    
</records>
Die Ausgaben
trace(discographyXML.records.length()); und

trace(discographyXML.records.record.length());

liefern beide 0. Letztendlich will ich jeden "record" als eigenen MovielClip visualisieren und brauche für eine loop-Anweisung die Anzahl der XML-Objekte mit der Bezeichung <record>, das gleiche innerhalb des Record nochmal für Tracks.
Jaro_E ist offline   Mit Zitat antworten
Alt 02-12-2011, 23:52   #2 (permalink)
Neuer User
 
Registriert seit: Sep 2010
Beiträge: 112
Ist es eigentlich notwendig, die beiden <visualTrack> - Knoten nochmal mit einem übergeordneten <visualTracks> - Knoten zu bündeln?
Jaro_E ist offline   Mit Zitat antworten
Alt 03-12-2011, 00:11   #3 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 6.162
Versuch's mal mit
PHP-Code:
trace(discographyXML.record.length()); 
__________________
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 gerade online   Mit Zitat antworten
Alt 04-12-2011, 17:04   #4 (permalink)
Neuer User
 
Registriert seit: Sep 2010
Beiträge: 112
Okay, das funktioniert. Nochmal eine grundsätzliche Frage.

Weiter im Programm wird jeweils der <record>-Knoten abgespalten und einer eigenen Record-Klasse als Parameter übergeben, abrufbar unter der Instanzvariable recordXML

Hier das XML:
PHP-Code:
<record id="0" type="album">
  <
myTitle>title</myTitle>
  <
coverURL>inside_out_part1/inside_out_part1.jpg</coverURL>
  <
visualTrack id="0">
    <
position>1</position>
    <
myTitle>title</myTitle>
    <
trackURL>trtz</trackURL>
    <
visualURL>rtzrt</visualURL>
  </
visualTrack>
  <
visualTrack id="1">
    <
position>1</position>
    <
myTitle>title</myTitle>
    <
trackURL>trtz</trackURL>
    <
visualURL>rtzrt</visualURL>
  </
visualTrack>
</
record
Nun liefert recordXML.record.length() 0, obwohl doch auf jeden Fall 1 Knoten <record> exisitiert.

So wie ich das jetzt verstanden habe, gibt die Methode length() die Anzahl der Knoten mit dem selben Namen aus, die auf der Ebene liegen, an die length() angehängt wird.

Wie gebe ich die Anzahl der Knoten aus, die unterhalb der Ebene <record> liegt, also 4 (1x <myTitle> + 1x <position> + 2x <visualTrack>)?
Jaro_E ist offline   Mit Zitat antworten
Alt 04-12-2011, 18:13   #5 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 6.162
Zitat:
Zitat von Jaro_E Beitrag anzeigen
Nun liefert recordXML.record.length() 0, obwohl doch auf jeden Fall 1 Knoten <record> exisitiert.
recordXML ist doch bereits das <record>-Node. Und innerhalb dieses Nodes existieren nunmal keine weiteren <record>-Nodes, weshalb length() der zugehörigen XMLList auch 0 ergibt.
Richtig wäre das folgende Script (Wobei es natürlich ziemlich unsinnig ist sich die Anzahl eines Knotens ausgeben zulassen )
ActionScript:
  1. recordXML.length();

Zitat:
Zitat von Jaro_E Beitrag anzeigen
Wie gebe ich die Anzahl der Knoten aus, die unterhalb der Ebene <record> liegt, also 4 (1x <myTitle> + 1x <position> + 2x <visualTrack>)?
Ganz einfach:
ActionScript:
  1. recordXML.myTitle.length();
  2. recordXML.visualTrack.length();
  3.  
  4. recordXML.visualTrack.position.length();
  5. //bzw
  6. recordXML..position.length();
Oberhalb gelegene Knoten hingegen müsstest Du über die Methode parent() ansteuern.

In der Praxis kommt man übrigens meistens ganz ohne die length()-Methode aus und benutzt stattdessen eine for each-Schleife um durch die XMLList zu iterieren:
ActionScript:
  1. for each (var trackXML:XML in recordXML.visualTrack) {
  2.    trace(trackXML.position+" | "+trackXML.trackURL+" | "+trackXML.visualURL);
  3. }
Das my in selbstvergebenen Namen solltest Du Dir IMHO übrigens schenken. Zum einen gehören Dir nämlich eh alle Objekte (Variablen, Knoten, ...), die Du erzeugst, und zum anderen sieht das so aus, als hättest Du ein Anfängertutorial abgetippt
__________________
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!

Geändert von Martin Kraft (04-12-2011 um 18:15 Uhr)
Martin Kraft ist gerade online   Mit Zitat antworten
Alt 04-12-2011, 18:14   #6 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 6.162
Zitat:
Zitat von Jaro_E Beitrag anzeigen
Ist es eigentlich notwendig, die beiden <visualTrack> - Knoten nochmal mit einem übergeordneten <visualTracks> - Knoten zu bündeln?
Nein
__________________
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 gerade online   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
Speicherbedarf von Objekten auslesen flash_newbie ActionScript 3 7 02-02-2011 19:41
Größen von Objekten aus Bibliothek auslesen marc242 ActionScript 2 7 05-03-2010 19:47
Pfade von Objekten auslesen Exodus ActionScript 3 3 22-09-2009 00:58
XMLConnector und richtiges auslesen headkit Flash MX 2004 1 19-08-2005 09:55


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:38 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele