Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 26-11-2004, 12:20   #1 (permalink)
=)
 
Benutzerbild von dante
 
Registriert seit: Jun 2003
Beiträge: 499
mehrdimensionale Arrays und XML-Daten VS me

hi

vorneweg: ist eigentlich ein folgeproblem aus [Denkansatz] simple Datenstruktur wollte es nur sauber in nem neuem thread haben:

und zwar versuche ich nen XML Dokument in nen mehrdimensionales array zu packen, ich scheitere aber grandios daran. die theorie von arrays habe ich glaube ich verstanden, aber in der praxis fehlt mir noch die ein oder andere gehirnschlaufe


mein XML:
ActionScript:
  1. <?xml version="1.0" encoding="iso-8859-1"?>
  2.  
  3. <texte>
  4.  
  5. <text id="eins">
  6. <head>tolle überschrift</head>
  7. <text>super text</text>
  8. </text>
  9.  
  10. <text id="zwei">
  11. <head>tolle überschrift</head>
  12. <text>super text</text>
  13. </text>
  14.  
  15. <text id="drei">
  16. <head>tolle überschrift</head>
  17. <text>super text</text>
  18. </text>
  19.  
  20. </texte>

und der AS code noch:

ActionScript:
  1. stop();
  2.  
  3. //XML schlonz
  4. meinXML = new XML;
  5. meinXML.ignoreWhite = true;
  6. xmldatei = "daten.xml";
  7. meinXML.load(xmldatei);
  8.        
  9. meinXML.onLoad = function(success) {
  10.     if(success) {
  11.         XMLtext = [];
  12.         /*
  13.         ???
  14.         XMLtext[0] = [];
  15.         Xmltext[0][0] = [];
  16.         */
  17.        
  18.         ausgabe.text = "XML geladen!" + newline;
  19.         ausgabe.text += "Anzahl der enthaltenen Texte: " + meinXML.firstChild.childNodes.length + newline;
  20.        
  21.         for(i=0;i < meinXML.firstChild.childNodes.length; i++) {
  22.             // XMLtext [textid] [textelement] [typ bzw. wert]
  23.             // id des textes
  24.             XMLtext[i] = meinXML.firstChild.childNodes[i].attributes.id;
  25.            
  26.                 for(j=0;j < meinXML.firstChild.childNodes[i].childNodes[j].length; j++) {
  27.                     // typ und wert jedes vorkommendem textelements (j) in einem bestimmtem text (i)
  28.                    
  29.                     //XMLtext[i][j] = [meinXML.firstChild.childNodes[i].childNodes[j].nodeName,meinXML.firstChild.childNodes[i].childNodes[j].nodeValue]
  30.                    
  31.                     XMLtext[i][j]["typ"] = meinXML.firstChild.childNodes[i].childNodes[j].nodeName;
  32.                     XMLtext[i][j]["wert"] = meinXML.firstChild.childNodes[i].childNodes[j].nodeValue;
  33.                    
  34.                    
  35.                     ausgabe.text += meinXML.firstChild.childNodes[i].childNodes[j].nodeName + newline;
  36.                     }
  37.            
  38.             }
  39.         ausgabe.text += "Initialisierung fertig!"  + newline;
  40.        
  41.         }   // success
  42.     else {
  43.         ausgabe.text = "Fehler!!!";
  44.         }
  45.     } // onLoad
  46.    
  47.    
  48. my_btn.onRelease = function() {
  49.         //ausgabe.text += "click"  + newline;
  50.        
  51.         for(i=0;i < XMLtext.length;i++) {
  52.             ausgabe.text += "Element: " + XMLtext[i] + newline;
  53.            
  54.             for(j=0; j < XMLtext[i][j].length; j++) {
  55.                 ausgabe.text += "Typ: " + XMLtext[i][j]["typ"] + newline;
  56.                 ausgabe.text += "Wert: " + XMLtext[i][j]["wert"] + newline;
  57.                 }
  58.            
  59.             }
  60.                    
  61.        
  62.     }
im mom gibt er mir nur

eins
zwei
drei

aus, also alle ids der texte. bei ausgabe der arrays gibt er mir undefined, muss wohl also bei der initialisation schon was deftig schieflaufen


das array sollte eigentlich diese struktur aufweisen: [textid] [textelement also head oder text] [typ bzw. wert als assoziatives array]
__________________
x 600.6
y 123.3
dante ist offline   Mit Zitat antworten
Alt 26-11-2004, 12:36   #2 (permalink)
The Man Who Wasn't There
 
Benutzerbild von fraggle two
 
Registriert seit: Jul 2003
Ort: BÄRLIN
Beiträge: 1.156
hi,

bin zwar nicht so der xml crack aber sollten die texte nicht in einem tag stehen welches nicht <text> heißt da ja deine unterpunkte schon <text> heißen...

also anstatt

<text>super_text</text>

eher

<inhalt>super_text</inhalt>

oder ähnliches nur nicht <text>

?

gruß
mike
__________________
Dot-Realities
Mike Broders
Berlin

ICQ:105925103

Dot-Realities v4.0 under construction!
fraggle two ist offline   Mit Zitat antworten
Alt 29-11-2004, 13:25   #3 (permalink)
=)
 
Benutzerbild von dante
 
Registriert seit: Jun 2003
Beiträge: 499
ok danke habe ich geändert, hätte eventuell später probleme damit geben können.

so mein XML sieht jetzt so aus:

ActionScript:
  1. <?xml version="1.0" encoding="iso-8859-1"?>
  2.  
  3. <inhalt>
  4.  
  5.     <texte id="eins">
  6.         <head>tolle überschrift</head>
  7.         <text>super text</text>
  8.     </texte>
  9.  
  10.     <texte id="zwei">
  11.         <head>tolle überschrift</head>
  12.         <text>super text</text>
  13.     </texte>
  14.  
  15.     <texte id="drei">
  16.         <head>tolle überschrift</head>
  17.         <text>super text</text>
  18.     </texte>
  19.  
  20. </inhalt>


das as macht aber immer noch probleme. mit folgendem code:

ActionScript:
  1. stop();
  2.  
  3. //XML schlonz
  4. meinXML = new XML;
  5. meinXML.ignoreWhite = true;
  6. xmldatei = "daten.xml";
  7. meinXML.load(xmldatei);
  8.        
  9. meinXML.onLoad = function(success) {
  10.     if(success) {
  11.         XMLtext = [];
  12.         /*
  13.         ???
  14.         XMLtext[0] = [];
  15.         Xmltext[0][0] = [];
  16.         */
  17.        
  18.         ausgabe.text = "XML geladen!" + newline;
  19.         ausgabe.text += "Anzahl der enthaltenen Texte: " + meinXML.firstChild.childNodes.length + newline;
  20.        
  21.         for(i=0;i < meinXML.firstChild.childNodes.length; i++) {
  22.             // XMLtext [textid] [textelement] [typ bzw. wert]
  23.            
  24.             // id des textes
  25.             XMLtext[i] = meinXML.firstChild.childNodes[i].attributes.id;
  26.            
  27.                 for(j=0;j < meinXML.firstChild.childNodes[i].childNodes[j].length; j++) {
  28.                     // typ und wert jedes vorkommendem textelements (j) in einem bestimmtem text (i)
  29.                    
  30.                     XMLtext[i][j] = [meinXML.firstChild.childNodes[i].childNodes[j].nodeName,meinXML.firstChild.childNodes[i].childNodes[j].nodeValue]
  31.                    
  32.                     /*XMLtext[i][j]["typ"] = meinXML.firstChild.childNodes[i].childNodes[j].nodeName;
  33.                     XMLtext[i][j]["wert"] = meinXML.firstChild.childNodes[i].childNodes[j].nodeValue;
  34.                                                     */
  35.                    
  36.                     //ausgabe.text += meinXML.firstChild.childNodes[i].childNodes[j].nodeName + newline;
  37.                    
  38.                     }
  39.            
  40.             }
  41.         ausgabe.text += "Initialisierung fertig!"  + newline;
  42.        
  43.         }   // success
  44.     else {
  45.         ausgabe.text = "Fehler!!!";
  46.         }
  47.     } // onLoad
  48.    
  49.    
  50. my_btn.onRelease = function() {
  51.         //ausgabe.text += "click"  + newline;
  52.        
  53.         for(i=0;i < XMLtext.length;i++) {
  54.             ausgabe.text += "Element: " + XMLtext[i] + newline;
  55.            
  56.             for(j=0; j < XMLtext[i][j].length; j++) {
  57.                 ausgabe.text += "Typ: " + XMLtext[i][j] + newline;
  58.                 ausgabe.text += "Wert: " + XMLtext[i][j] + newline;
  59.                 // */
  60.                 /*ausgabe.text += "Typ: " + XMLtext[i][j][0] + newline;
  61.                 ausgabe.text += "Wert: " + XMLtext[i][j][1] + newline; */
  62.                
  63.                 }
  64.            
  65.             }
  66.                    
  67.        
  68.     }

gibt er mir nur das aus:

Code:
XML geladen!
Anzahl der enthaltenen Texte: 3
Initialisierung fertig!
Element: eins
Element: zwei
Element: drei

die array inhalte sind undefined bzw kann ich sie gar nicht mehr abrufen.

suche auf dem board hat mich nicht besonders weitergebracht. wäre super wenn "ein grosser" mich auf meinen fehler stumpen könnte
__________________
x 600.6
y 123.3
dante ist offline   Mit Zitat antworten
Alt 29-11-2004, 13:46   #4 (permalink)
The Man Who Wasn't There
 
Benutzerbild von fraggle two
 
Registriert seit: Jul 2003
Ort: BÄRLIN
Beiträge: 1.156
hi,

mach mal :
ActionScript:
  1. ausgabe.text += "Element: " + XMLtext[i][1] + newline;
gruß
mike
__________________
Dot-Realities
Mike Broders
Berlin

ICQ:105925103

Dot-Realities v4.0 under construction!
fraggle two ist offline   Mit Zitat antworten
Alt 29-11-2004, 13:54   #5 (permalink)
=)
 
Benutzerbild von dante
 
Registriert seit: Jun 2003
Beiträge: 499
Zitat:
Zitat von fraggle two
hi,

mach mal :
ActionScript:
  1. ausgabe.text += "Element: " + XMLtext[i][1] + newline;
gruß
mike
ok gibt mir undefined aus.
__________________
x 600.6
y 123.3
dante ist offline   Mit Zitat antworten
Alt 29-11-2004, 14:25   #6 (permalink)
_//\\#//\\_
 
Benutzerbild von warrantmaster
 
Registriert seit: Jan 2003
Beiträge: 7.060
PHP-Code:
var m=new XML()
m.ignoreWhite=true
m
.onLoad=function(ok)
{
    if(
ok)
    {
        
mainarr=[]
        for(var 
i=0;i<this.firstChild.childNodes.length;i++)
        {
            
mainarr[i]=[]
            var 
id=this.firstChild.childNodes[i].attributes.id
            
var ueberschrift=this.firstChild.childNodes[i].childNodes[0].childNodes[0].nodeValue
            
var tex=this.firstChild.childNodes[i].childNodes[1].childNodes[0].nodeValue
            mainarr
[i].push(id)
            
mainarr[i].push(ueberschrift)
            
mainarr[i].push(tex)
        }
    }
}
m.load("test.xml")

bt.onPress=function()
{
    for(var 
i=0;i<mainarr.length;i++)
    {
        for(var 
k=0;k<mainarr[i].length;k++)
        {
            
textfeld.text +=mainarr[i][k]+newline
        
}
    }

als "starre" variante, d.h. die xml-struktur ist durchgängig.
grz
warrantmaster ist offline   Mit Zitat antworten
Alt 29-11-2004, 14:27   #7 (permalink)
=)
 
Benutzerbild von dante
 
Registriert seit: Jun 2003
Beiträge: 499
bin jetzt völlig vom pfad abgekommen:

ActionScript:
  1. stop();
  2.  
  3. //XML schlonz
  4. meinXML = new XML;
  5. meinXML.ignoreWhite = true;
  6. xmldatei = "daten.xml";
  7. meinXML.load(xmldatei);
  8.        
  9. meinXML.onLoad = function(success) {
  10.     if(success) {
  11.         XMLtext = [];
  12.         /*
  13.         ???
  14.         XMLtext[0] = [];
  15.         Xmltext[0][0] = [];
  16.         */
  17.        
  18.         ausgabe.text = "XML geladen!" + newline;
  19.         ausgabe.text += "Anzahl der enthaltenen Texte: " + meinXML.firstChild.childNodes.length + newline;
  20.        
  21.         for(i=0;i < meinXML.firstChild.childNodes.length; i++) {
  22.             // XMLtext [textid] [textelement] [typ bzw. wert]
  23.            
  24.             // id des textes
  25.             /*XMLtext[i] = [];
  26.             XMLtext[i] = meinXML.firstChild.childNodes[i].attributes.id;*/
  27.            
  28.             XMLtext[meinXML.firstChild.childNodes[i].attributes.id] = [];
  29.            
  30.            
  31.            
  32.                 for(j=0;j < meinXML.firstChild.childNodes[i].childNodes.length; j++) {
  33.                     trace("i: " + i + " j: " + j);
  34.                    
  35.                     // typ und wert jedes vorkommendem textelements (j) in einem bestimmtem text (i)
  36.                    
  37.                     //XMLtext[i][j] = {typ: meinXML.firstChild.childNodes[i].childNodes[j].nodeName , wert: meinXML.firstChild.childNodes[i].childNodes[j].nodeValue }
  38.                     XMLtext[meinXML.firstChild.childNodes[i].attributes.id][j] = [];
  39.                     XMLtext[meinXML.firstChild.childNodes[i].attributes.id][j]["typ"] = meinXML.firstChild.childNodes[i].childNodes[j].nodeName;
  40.                     //XMLtext[i][j]["wert"] = meinXML.firstChild.childNodes[i].childNodes[j].nodeValue;
  41.                                                     //*/
  42.                    
  43.                     //ausgabe.text += meinXML.firstChild.childNodes[i].childNodes[j].nodeName + newline;
  44.                    
  45.                     }
  46.            
  47.             }
  48.         ausgabe.text += "Initialisierung fertig!"  + newline;
  49.        
  50.         }   // success
  51.     else {
  52.         ausgabe.text = "Fehler!!!";
  53.         }
  54.     } // onLoad
  55.    
  56.    
  57. my_btn.onRelease = function() {
  58.         //ausgabe.text += "click"  + newline;
  59.        
  60.         for(i=0;i < XMLtext.length;i++) {
  61.             ausgabe.text += "Element: " + XMLtext[meinXML.firstChild.childNodes[i].attributes.id] + newline;
  62.            
  63.             for(j=0; j < XMLtext[meinXML.firstChild.childNodes[i].attributes.id][j].length; j++) {
  64.                 /*ausgabe.text += "Typ: " + XMLtext[i][j] + newline;
  65.                 ausgabe.text += "Wert: " + XMLtext[i][j] + newline;
  66.                  */
  67.                 ausgabe.text += "Typ: " + XMLtext[meinXML.firstChild.childNodes[i].attributes.id][j]["typ"] + newline;
  68.                 ausgabe.text += "Wert: " + XMLtext[meinXML.firstChild.childNodes[i].attributes.id][j]["wert"] + newline;
  69.                
  70.                
  71.                 }
  72.            
  73.             }
  74.                    
  75.        
  76.     }


um nochmal mein eigentliches verständnisproblem zu erläutern: aus dem vorhandenen xml daten möchte ich ein mehrdimensionales array mit folgender struktur erstellen array[textid][elementid]["typ"] und array[textid][elementid]["wert"]
__________________
x 600.6
y 123.3
dante ist offline   Mit Zitat antworten
Alt 29-11-2004, 14:37   #8 (permalink)
=)
 
Benutzerbild von dante
 
Registriert seit: Jun 2003
Beiträge: 499
@warrantmaster:

lustig. bei der boardsuche habe ich einen thread gefunden indem es um ähnliches ging, wo du auch geantwortet hast. da hast du auch eine möglichkeit mit push() vorgeschlagen.


der casus-knackus ist, dass die struktur der elemente in jedem "texte"-knoten, nicht starr ist

mal gibt es einmal "head" und viermal "text", mal dreimal "head" und nullmal "text". ich möchte auch die möglichkeit haben andere "informationsarten" als head und text zu speichern (z.B. img), deswegen hat jedes element in der array struktur ja nochmal "wert" und "typ" als assoziatives array. das ganze ist als universales "text in array einlese sache und dann dieses array von flash separat rendern lassen"-ding geplant. es soll ermöglichen text variabel einzulesen, inklusive zwischengeschobenen bildern etc.

hatte mir den array aufbau deswegen so durchüberlegt, aber die programmiertechnische umsetzung ist dann doch was anderes
__________________
x 600.6
y 123.3
dante ist offline   Mit Zitat antworten
Alt 29-11-2004, 14:49   #9 (permalink)
=)
 
Benutzerbild von dante
 
Registriert seit: Jun 2003
Beiträge: 499
ok

ich glaube ich bin auf dem richtigem weg:

folgender code:
ActionScript:
  1. stop();
  2.  
  3. //XML schlonz
  4. meinXML = new XML;
  5. meinXML.ignoreWhite = true;
  6. xmldatei = "daten.xml";
  7.  
  8.        
  9. meinXML.onLoad = function(success) {
  10.     if(success) {
  11.        
  12.         ausgabe.text = "XML geladen!" + newline;
  13.         ausgabe.text += "Anzahl der enthaltenen Texte: " + meinXML.firstChild.childNodes.length + newline;
  14.        
  15.         _global.anzahl = meinXML.firstChild.childNodes.length;
  16.         XMLtext = [];
  17.        
  18.         for(i=0;i < meinXML.firstChild.childNodes.length; i++) {
  19.             // XMLtext [textid] [textelement] [typ bzw. wert]
  20.            
  21.             // id des textes
  22.             /*XMLtext[i] = [];
  23.             XMLtext[i] = meinXML.firstChild.childNodes[i].attributes.id;*/
  24.             trace(meinXML.firstChild.childNodes[i].attributes.id);
  25.             XMLtext[meinXML.firstChild.childNodes[i].attributes.id] = [];
  26.            
  27.            
  28.            
  29.                 for(j=0;j < meinXML.firstChild.childNodes[i].childNodes.length; j++) {
  30.                     trace("i: " + i + " j: " + j);
  31.                    
  32.                     /*// typ und wert jedes vorkommendem textelements (j) in einem bestimmtem text (i)
  33.                    
  34.                     //XMLtext[i][j] = {typ: meinXML.firstChild.childNodes[i].childNodes[j].nodeName , wert: meinXML.firstChild.childNodes[i].childNodes[j].nodeValue }
  35.                     XMLtext[meinXML.firstChild.childNodes[i].attributes.id][j] = [];
  36.                     XMLtext[meinXML.firstChild.childNodes[i].attributes.id][j]["typ"] = meinXML.firstChild.childNodes[i].childNodes[j].nodeName;
  37.                     //XMLtext[i][j]["wert"] = meinXML.firstChild.childNodes[i].childNodes[j].nodeValue;
  38.                                                     //
  39.                    
  40.                     //ausgabe.text += meinXML.firstChild.childNodes[i].childNodes[j].nodeName + newline;
  41.                     */
  42.                     }
  43.                    
  44.                    
  45.            
  46.             }
  47.         ausgabe.text += "Initialisierung fertig!"  + newline;
  48.        
  49.         }   // success
  50.     else {
  51.         ausgabe.text = "Fehler!!!";
  52.         }
  53.     } // onLoad
  54.    
  55.    
  56. my_btn.onRelease = function() {
  57.         //ausgabe.text += "click"  + newline;
  58.        
  59.         for(i=0;i < _global.anzahl;i++) {
  60.             ausgabe.text += "Element: " + XMLtext[meinXML.firstChild.childNodes[i].attributes.id] + newline;
  61.            
  62.             /*for(j=0; j < XMLtext[meinXML.firstChild.childNodes[i].attributes.id][j].length; j++) {
  63.                 /*ausgabe.text += "Typ: " + XMLtext[i][j] + newline;
  64.                 ausgabe.text += "Wert: " + XMLtext[i][j] + newline;
  65.                
  66.                 ausgabe.text += "Typ: " + XMLtext[meinXML.firstChild.childNodes[i].attributes.id][j]["typ"] + newline;
  67.                 ausgabe.text += "Wert: " + XMLtext[meinXML.firstChild.childNodes[i].attributes.id][j]["wert"] + newline;
  68.                
  69.                
  70.                 }*/
  71.            
  72.             }
  73.                    
  74.        
  75.     }
  76.    
  77. meinXML.load(xmldatei);

traced mir:
Code:
eins
i: 0 j: 0
i: 0 j: 1
zwei
i: 1 j: 0
i: 1 j: 1
i: 1 j: 2
drei
i: 2 j: 0
i: 2 j: 1
i: 2 j: 2
für diese XML datei aus:

ActionScript:
  1. <?xml version="1.0" encoding="iso-8859-1"?>
  2.  
  3. <inhalt>
  4.  
  5.     <texte id="eins">
  6.         <head>tolle überschrift</head>
  7.         <text>super text</text>
  8.     </texte>
  9.  
  10.     <texte id="zwei">
  11.         <head>tolle überschrift</head>
  12.         <text>super text</text>
  13.         <text>normaler text</text>
  14.     </texte>
  15.  
  16.     <texte id="drei">
  17.         <head>tolle überschrift</head>
  18.         <text>super text</text>
  19.         <head>zweite überschrift</head>
  20.     </texte>
  21.  
  22. </inhalt>

was ja schonmal richtig ist!
__________________
x 600.6
y 123.3
dante ist offline   Mit Zitat antworten
Alt 29-11-2004, 15:15   #10 (permalink)
=)
 
Benutzerbild von dante
 
Registriert seit: Jun 2003
Beiträge: 499
okay, okay, okay:

ActionScript:
  1. stop();
  2.  
  3. //XML schlonz
  4. meinXML = new XML;
  5. meinXML.ignoreWhite = true;
  6. xmldatei = "daten.xml";
  7.  
  8.        
  9. meinXML.onLoad = function(success) {
  10.     if(success) {
  11.        
  12.         ausgabe.text = "XML geladen!" + newline;
  13.         ausgabe.text += "Anzahl der enthaltenen Texte: " + meinXML.firstChild.childNodes.length + newline;
  14.        
  15.         _global.anzahl = meinXML.firstChild.childNodes.length;
  16.         XMLtext = [];
  17.        
  18.         for(i=0;i < meinXML.firstChild.childNodes.length; i++) {
  19.             // XMLtext [textid] [textelement] [typ bzw. wert]
  20.            
  21.             // id des textes
  22.             /*XMLtext[i] = [];
  23.             XMLtext[i] = meinXML.firstChild.childNodes[i].attributes.id;*/
  24.             trace(meinXML.firstChild.childNodes[i].attributes.id);
  25.             XMLtext[meinXML.firstChild.childNodes[i].attributes.id] = [];
  26.            
  27.            
  28.            
  29.                 for(j=0;j < meinXML.firstChild.childNodes[i].childNodes.length; j++) {
  30.                    
  31.                     trace("i: " + i + " j: " + j);   
  32.                    
  33.                     typ = meinXML.firstChild.childNodes[i].childNodes[j].nodeName;
  34.                     wert = meinXML.firstChild.childNodes[i].childNodes[j].firstChild.nodeValue;
  35.                     trace(typ + newline +  wert);
  36.                    
  37.                    
  38.                    
  39.                     XMLtext[meinXML.firstChild.childNodes[i].attributes.id][j] = {typ:"typ", wert:"wert"};
  40.                    
  41.                     /*// typ und wert jedes vorkommendem textelements (j) in einem bestimmtem text (i)
  42.                    
  43.                     //XMLtext[i][j] = {typ: meinXML.firstChild.childNodes[i].childNodes[j].nodeName , wert: meinXML.firstChild.childNodes[i].childNodes[j].nodeValue }
  44.                     XMLtext[meinXML.firstChild.childNodes[i].attributes.id][j] = [];
  45.                     XMLtext[meinXML.firstChild.childNodes[i].attributes.id][j]["typ"] = meinXML.firstChild.childNodes[i].childNodes[j].nodeName;
  46.                     //XMLtext[i][j]["wert"] = meinXML.firstChild.childNodes[i].childNodes[j].nodeValue;
  47.                                                     //
  48.                    
  49.                     //ausgabe.text += meinXML.firstChild.childNodes[i].childNodes[j].nodeName + newline;
  50.                     */
  51.                     }
  52.                    
  53.                    
  54.            
  55.             }
  56.         ausgabe.text += "Initialisierung fertig!"  + newline;
  57.        
  58.         }   // success
  59.     else {
  60.         ausgabe.text = "Fehler!!!";
  61.         }
  62.     } // onLoad
  63.    
  64.    
  65. my_btn.onRelease = function() {
  66.         //ausgabe.text += "click"  + newline;
  67.        
  68.         for(i=0;i < _global.anzahl;i++) {
  69.             ausgabe.text += "Element: " + XMLtext[meinXML.firstChild.childNodes[i].attributes.id] + newline;
  70.            
  71.             /*for(j=0; j < XMLtext[meinXML.firstChild.childNodes[i].attributes.id][j].length; j++) {
  72.                 /*ausgabe.text += "Typ: " + XMLtext[i][j] + newline;
  73.                 ausgabe.text += "Wert: " + XMLtext[i][j] + newline;
  74.                
  75.                 ausgabe.text += "Typ: " + XMLtext[meinXML.firstChild.childNodes[i].attributes.id][j]["typ"] + newline;
  76.                 ausgabe.text += "Wert: " + XMLtext[meinXML.firstChild.childNodes[i].attributes.id][j]["wert"] + newline;
  77.                
  78.                
  79.                 }*/
  80.            
  81.             }
  82.                    
  83.        
  84.     }
  85.    
  86. meinXML.load(xmldatei);

traced mir:

eins
i: 0 j: 0
head
tolle überschrift
i: 0 j: 1
text
super text
zwei
i: 1 j: 0
head
tolle überschrift
i: 1 j: 1
text
super text
i: 1 j: 2
text
normaler text
drei
i: 2 j: 0
head
tolle übeberschrift
i: 2 j: 1
text
super text
i: 2 j: 2
head
zweite überschrift


was komplett perfekt ist.

gebe ich aber die arrays aus

ausgabe.text += "Element: " + XMLtext[meinXML.firstChild.childNodes[i].attributes.id] + newline;

sehe ich nur

Element: [object Object],[object Object]
Element: [object Object],[object Object],[object Object]
Element: [object Object],[object Object],[object Object]
__________________
x 600.6
y 123.3
dante ist offline   Mit Zitat antworten
Alt 29-11-2004, 15:23   #11 (permalink)
_//\\#//\\_
 
Benutzerbild von warrantmaster
 
Registriert seit: Jan 2003
Beiträge: 7.060
PHP-Code:
var m=new XML()
m.ignoreWhite=true
m
.onLoad=function(ok)
{
    if(
ok)
    {
        
mainarr=[]
        for(var 
i=0;i<this.firstChild.childNodes.length;i++)
        {
            
mainarr[i]=[]
            var 
id=this.firstChild.childNodes[i].attributes.id
            mainarr
[i].push(id)
            var 
ll=this.firstChild.childNodes[i].childNodes.length
            
for(var k=0;k<ll;k++)
            {
                var 
nam=this.firstChild.childNodes[i].childNodes[k].nodeName
                
var wert=this.firstChild.childNodes[i].childNodes[k].childNodes[0].nodeValue
                mainarr
[i].push(nam+"|"+wert)
            }
        }
    }
}
m.load("test.xml")

function 
suchen(id,typ)
{
    for(var 
i=0;i<mainarr.length;i++)
    {
        for(var 
k=0;k<mainarr[i].length;k++)
        {
            if(
mainarr[i][0]==id)
            {
                var 
auswahl=mainarr[i][k].split("|")
                if(
auswahl[0]==typ)
                {
                    
textfeld.text+=auswahl[1]+newline
                
}
            }
        }
    }
}
bt.onPress=function()
{
    
suchen("eins","text")



xml:

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

<inhalt>

    <texte id="eins">
        <head>tolle überschrift1</head>
        <text>super text1-1</text>
		<text>super text1-2</text>
		<text>super text1-3</text>
		<bild>bild1.jpg</bild>
		<link>www.flashforum.de</link>		
    </texte>

    <texte id="zwei">
        <head>tolle überschrift2</head>
        <text>super text2</text>
    </texte>

    <texte id="drei">
        <head>tolle überschrift3</head>
        <text>super text3</text>
    </texte>

</inhalt>
als ansatz (viele wege führen zum ziel )

grz
warrantmaster ist offline   Mit Zitat antworten
Alt 29-11-2004, 15:45   #12 (permalink)
=)
 
Benutzerbild von dante
 
Registriert seit: Jun 2003
Beiträge: 499
wiesie sieht das bei dir so einfach aus und ich krampf mich total richtung ziel?
__________________
x 600.6
y 123.3
dante ist offline   Mit Zitat antworten
Alt 29-11-2004, 15:51   #13 (permalink)
_//\\#//\\_
 
Benutzerbild von warrantmaster
 
Registriert seit: Jan 2003
Beiträge: 7.060
ja nee, wenn du das öfter machst, dann ist es einfach .

ich gehe immer (!) den xml-baum step by step durch, zuerst immer nur trace(blabla...)

also: trace,trace,trace !!!

grz
warrantmaster ist offline   Mit Zitat antworten
Alt 01-12-2004, 10:40   #14 (permalink)
=)
 
Benutzerbild von dante
 
Registriert seit: Jun 2003
Beiträge: 499
so,

das erstellen des dynamischen mehrdimensionalem arrays klappt jetzt, wie ich es wollte:

ActionScript:
  1. stop();
  2.  
  3. //XML schlonz
  4. meinXML = new XML;
  5. meinXML.ignoreWhite = true;
  6. xmldatei = "daten.xml";
  7.  
  8.        
  9. meinXML.onLoad = function(success) {
  10.     if(success) {
  11.        
  12.         ausgabe.text = "XML geladen!" + newline;
  13.         ausgabe.text += "Anzahl der enthaltenen Texte: " + meinXML.firstChild.childNodes.length + newline;
  14.        
  15.         _global.anzahl = meinXML.firstChild.childNodes.length;
  16.         XMLtext = [];
  17.        
  18.         for(var i=0;i < meinXML.firstChild.childNodes.length; i++) {
  19.  
  20.             trace(meinXML.firstChild.childNodes[i].attributes.id);
  21.             XMLtext[meinXML.firstChild.childNodes[i].attributes.id] = [];
  22.            
  23.            
  24.            
  25.                 for(var j=0;j < meinXML.firstChild.childNodes[i].childNodes.length; j++) {
  26.                    
  27.                     trace("i: " + i + " j: " + j);   
  28.                    
  29.                     typ = meinXML.firstChild.childNodes[i].childNodes[j].nodeName;
  30.                     wert = meinXML.firstChild.childNodes[i].childNodes[j].firstChild.nodeValue;
  31.                     trace("typ: " + typ + newline + "wert: "+  wert);
  32.                                        
  33.                     XMLtext[meinXML.firstChild.childNodes[i].attributes.id][j] = [];
  34.                     XMLtext[meinXML.firstChild.childNodes[i].attributes.id][j]["typ"] = typ;
  35.                     XMLtext[meinXML.firstChild.childNodes[i].attributes.id][j]["wert"] = wert;
  36.                    
  37.                     }
  38.            
  39.             }
  40.         ausgabe.text += "Initialisierung fertig!"  + newline;
  41.        
  42.         }   // success
  43.     else {
  44.         ausgabe.text = "Fehler!!!";
  45.         }
  46.     } // onLoad
  47.    
  48.    
  49. my_btn.onRelease = function() {
  50.                
  51.         for(i=0;i < _global.anzahl;i++) {
  52.             ausgabe.text += newline + "i: " + i + newline;
  53.             ausgabe.text += "Element: " + XMLtext[i] + newline;
  54.            
  55.             for(j=0; j < meinXML.firstChild.childNodes[i].childNodes.length; j++) {
  56.                 ausgabe.text += "    j: " + j + newline;
  57.                 ausgabe.text += "Typ: " + XMLtext[meinXML.firstChild.childNodes[i].attributes.id][j]["typ"] + newline;
  58.                 ausgabe.text += "Wert: " + XMLtext[meinXML.firstChild.childNodes[i].attributes.id][j]["wert"] + newline;
  59.                 }
  60.            
  61.             } //i
  62.                    
  63.        
  64.     }
  65.    
  66. meinXML.load(xmldatei);


nur eine kleine sache würd das weitere arbeiten noch erleichtern:

und zwar:
wie kann ich an den namen eines dynamisch erzeugtem asoziativen array kommen?

klingt komplizierter als es ist: ich setze den namen so
XMLtext[meinXML.firstChild.childNodes[i].attributes.id] = [];

in der xml haben diese id's namen (z.B. "eins", "zwei" etc.)

wie kann ich aber genau diees namen der einzelnen arrayelemente wieder ausgeben lassen?

also ich möchte das er mir folgendes traced:

Elemente:
eins
zwei
drei

mit XMLtext[meinXML.firstChild.childNodes[i].attributes.id] komme ich ja an den inhalt des elements heran, nicht aber an seinen namen. es muss doch eine möglichkeit geben diesen namen auszulesen und nicht immer meinXML.firstChild.childNodes[i].attributes.id zu benutzen.

is bestimmt super einfach wenn mans weiss!
__________________
x 600.6
y 123.3

Geändert von dante (01-12-2004 um 10:41 Uhr)
dante ist offline   Mit Zitat antworten
Alt 01-12-2004, 16:39   #15 (permalink)
_//\\#//\\_
 
Benutzerbild von warrantmaster
 
Registriert seit: Jan 2003
Beiträge: 7.060
nodeName
warrantmaster 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 22:42 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele