• SpryFlashCMS das Flash CMS
  • TWUMBLE - bald online
  • Adobe User Group
Zurück   Flashforum > Flash > ActionScript > ActionScript 3

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 12-03-2010, 12: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, 12:59   #2 (Permalink)
Certified dump
 
Registriert seit: Aug 2001
Beiträge: 728
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);	
						}
					}
					
				}
			}
__________________
_______
Actionscript ist grauenhaft.
Dennoch hat es auch seine Vorteile. Man bekommt unglaublich schnell etwas hin.
Man muss relativ wenig wissen um die ersten Schritte machen zu können.
Und gegenüber dieser Dynamik treten dann die Defizite erst einmal in den Hintergrund...
rudi66 ist offline   Mit Zitat antworten
Alt 12-03-2010, 13:50   #3 (Permalink)
Neuer User
 
Registriert seit: Nov 2005
Beiträge: 299
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, 13:51   #4 (Permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 9.403
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.
__________________
FFK09:Speaker und FFK09:Trainer :: Architectures - Refactoring - Prototyping - Coding - Training :: ActionScript 3 - Flex [2,3,4] - Java - Scala
Omega Psi ist offline   Mit Zitat antworten
Alt 12-03-2010, 15: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 01:10
eine tiefere ebene ansprechen edayflo Flash MX 2004 1 09-10-2004 17:37
loadmovie und tiefere Ebenenaktion Tori Flash MX 5 07-10-2004 13:06
actionscriptbug oder zuviel bäume?? svh ActionScript 1 4 09-05-2003 13:10
colorObj, der Wald und lauter Bäume dmxmorales ActionScript 1 7 01-03-2002 19:03


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

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


Copyright ©1999 – 2010 Marc Thiele und Sascha Wolter.