| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Neuer User Registriert seit: Oct 2002
Beiträge: 102
|
Hallo! Ich habe vor ,aus einem XML Object ein Flash Objekt zu generieren. Im Gegensatz zu den mir bekannten Lösungen möchte ich aber zusätzlich die Verknüpfungen zwischen den Knoten, also firstChild, nextSibling usw beibehalten. Mein Lösungsansatz war nun, statt der üblichen for..in Schleife das XML mit nextSibling zu durchlaufen: PHP-Code: ... dadurch dass ich das XML auch quasi in der Breite rekursiv durchlaufe komme ich im Gegensatz zur Schachtelungstiefe sehr leicht über die erlaubten 256 Stufen - eine etwas längere Liste mit Knoten reicht da schon. Wie vermeide ich das am besten, und laufe trotzdem in etwa wie gezeigt durch das Objekt, bzw gibt es einen anderen Weg, diese Verknüpfungen beim Parsen mit im resultierenden Flashobjekt abzubilden? Frank Kudermann -------------------------------------------------- http://www.alphanull.de Geändert von frankiee (09-02-2006 um 19:12 Uhr) |
| | |
| | #2 (permalink) |
| Flashaholic Registriert seit: Feb 2003 Ort: Berlin
Beiträge: 1.459
|
schau dir mal meine XML Iteratoren an XML Iterator der durchlooft nen XML tree linear mit einer while schleife, und das ganze ohne rekursion, ich bin leider immer noch nicht zu einem kompletten beispiel gekommen mfg alex
__________________ TVNEXT Solutions |
| | |
| | #3 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.324
|
"..sehr leicht über die erlaubten 256 Stufen.." kein wunder, du verschachtelst ja jedesmal. ein rekursiver aufruf hat nur dann zu erfolgen, wenn es eine stufe (einen ordner) tiefer geht. da musst du schon einen bär von einem xml haben, um die 256 zu knacken. Code: function fXMLParsen(_xml, _tiefe) {
do {
if (_xml.hasChildNodes()) {
fXMLParsen(_xml.firstChild, _tiefe+1);
} else {
trace(_tiefe+":"+_xml);
}
} while (_xml=_xml.nextSibling);
}
_xml = new XML("<a>aaa</a><a>aaa<b>bbb</b><b>bbb<c>ccc</c></b></a><a>aaa</a>");
fXMLParsen(_xml.firstChild, 0);
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de |
| | |
| | #4 (permalink) | |
| Neuer User Registriert seit: Jan 2005 Ort: In the arena
Beiträge: 165
| Zitat:
Code: for (var sibNode:XMLNode=node; sibNode != null; sibNode=sibNode.nextSibling)
{
// ...
} -sh
__________________ +++ Even a stopped clock gives the right time twice a day | |
| | |
| | #5 (permalink) |
| Neuer User Registriert seit: Oct 2002
Beiträge: 102
|
wow, danke, das waren ja gleich mal drei brauchbare Ansätze! Hab mich für die do...while Schleife entschieden, da sie meiner Denke doch am nächsten kam und sich auch die Verkettungsgeschichten recht einfach lösen liessen.Hat wer Interesse am finalen Code? Dann poste ich es gerne hier! Überlege auch gerade, ob ich nicht doch eine Unterklasse der "Object" Klasse definieren soll, da es ja auch darum gehen soll nicht nur zu iterieren, sondern auch neue Knoten einzufügen, etc. wo dann doch etwas mehr "Arbeit" geleistet werden muss. Mach mir auch Sorgen um die Speicherverwaltung, da es ja jetzt auch nicht mehr genügt, Objekte zu löschen, weil die Referenzen in anderen Objekten ja immer noch vorhanden wären. Hat wer Erfahrung mit sowas? |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |