• beyond tellerrand – play. Register Now!
Zurück   Flashforum > Flash > ActionScript > ActionScript 3

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 12-03-2010, 13:49   #1 (permalink)
Neuer User
 
Registriert seit: Feb 2010
Beiträge: 17
xml parsen in actionscript 3 - tiefere bäume

Hallo,
ich bin dabei einen xml-baum zu parsen. Ich habe bisher nicht herausgefunden, wie ich selbst einfach nur die Kinder der nächsten Ebene bekomme, um selber danach weiter runterzugehen , indem ich für jeden Knoten dann selbst noch eine Schleife mache. Ich finde immer nur Beispiele für eine XML-Datei mit einer Generation von Kindern. Wenn ich bei meiner verschachtelten XML-Datei das anwende, bekomme ich immer die gesamten Generationen unter einem Tag. Ich will aber nur die nächste bekommen und dann mir jedes einzeln angucken, um dann von jedem einzeln wieder weiter runter zu gucken.
Ist das verständlich ausgedrückt?
Wäre sehr dankbar, wenn mir jemand helfen könnte.
Vielen Dank,
java F.
javaFlasher ist offline   Mit Zitat antworten
Alt 12-03-2010, 13:59   #2 (permalink)
Certified dump
 
Registriert seit: Aug 2001
Beiträge: 920
Gibt viele Mittel und Wege,
hier mal ein uralter Schnipsel von mir...

Adobe beschreibt aber in der Hilfe das Parsen von komplexen XML
mit den neuen Kurzformen:
XML (ActionScript 3.0)

HTML-Code:
var result:XML = XML((event.target as URLLoader).data);            
			
			var myXML:XMLDocument=new XMLDocument();
			myXML.ignoreWhite=true;
			myXML.parseXML(result.toXMLString());
			
			/*
			<data>
				<category id="1">
					<name><![CDATA[Name]]></name>
					<subitem id="9">sub 1-1</subitem>
					<subitem id="4">sub 2-1</subitem>
				</category>	
			*/
			
			var node:XMLNode=myXML.firstChild;
			var n:int=int(node.childNodes.length);
			
			for(var j:int=0;j<n;j++)
			{
				if (node.childNodes[j].nodeName=="category")
				{
					var obj:Object=new Object();
					obj.id=result..@id[j];						
					obj.catname=result.category[j].catname;					
					obj.subcats=[];
					
					var sub:int=int(node.childNodes[j].childNodes.length);					
					for(var p:int=0;p<sub;p++)
					{
						if (node.childNodes[j].childNodes[p].nodeName=="subitem")
						{
							var mysubcat:Object=new Object();							
							mysubcat.subcatname=node.childNodes[j].childNodes[p].firstChild.nodeValue;
							mysubcat.id=(node.childNodes[j].childNodes[p].attributes['subid']);
							obj.subcats.push(mysubcat);	
						}
					}
					
				}
			}
__________________
_______
rudi66 ist offline   Mit Zitat antworten
Alt 12-03-2010, 14:50   #3 (permalink)
Neuer User
 
Registriert seit: Nov 2005
Beiträge: 545
Man kann ganz einfach rekursiv parsen:

ActionScript:
  1. var myXml:XML=
  2. <data>
  3.     <category id="1" test="bla">
  4.         <name><![CDATA[Name]]></name>
  5.         <subitem id="9">sub 1-1</subitem>
  6.         <subitem id="4">sub 2-1</subitem>
  7.     </category>
  8. </data>
  9. ;
  10.  
  11.  
  12. parseRecursive(myXml);
  13.  
  14. function parseRecursive(xml:XML,ebene:int=0){
  15.     trace("Ebene: "+ebene);
  16.     trace("  Knoten: "+xml.name());
  17.     trace("  Attribute: ");
  18.     for each(var a:XML in xml.attributes())trace("    "+a.name()+"="+a);
  19.     trace("  Inhalt: "+xml.text());
  20.     for each(var child:XML in xml.children())if(child.name())parseRecursive(child,ebene+1);
  21.     }
joeydee ist offline   Mit Zitat antworten
Alt 12-03-2010, 14:51   #4 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 11.854
Generisch:
ActionScript:
  1. function traverse(xml:XML):void
  2. {
  3.     var children:XMLList = xml.children();
  4.  
  5.     for each(var child:XML in children)
  6.     {
  7.         traverse(child);
  8.     }
  9. }
Wenn du nach bestimmten Knoten suchst, würde ich E4X (analog zu XPath) nutzen.
Omega Psi ist offline   Mit Zitat antworten
Alt 12-03-2010, 16:10   #5 (permalink)
Neuer User
 
Registriert seit: Feb 2010
Beiträge: 17
wow, eine antwort besser als die andere. vielen dank euch allen! das hat mich schritt für schritt weiter gebracht.
javaFlasher 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
Jahreszeiten - Blätter und Bäume freshmanFlash Flash MX 2004 13 17-07-2006 02:10
eine tiefere ebene ansprechen edayflo Flash MX 2004 1 09-10-2004 18:37
loadmovie und tiefere Ebenenaktion Tori Flash MX 5 07-10-2004 14:06
actionscriptbug oder zuviel bäume?? svh ActionScript 1 4 09-05-2003 14:10
colorObj, der Wald und lauter Bäume dmxmorales ActionScript 1 7 01-03-2002 20:03


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:59 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele