Hallo hallo,
ich sitz mal wieder an ner genialen aufgabe..
und zwar..
ich hab xml-dokumente.. diese sind leider beliebig groß
und enthalten beliebig viele rekursive aufrufe
die müssen weg!
steh nur momentan ein wenig auf dem schlauch..
also an nützlichen funktionen hab ich gefunden:
|
Quellcode
|
1
2
3
4
5
|
node.firstChild
child.nextSibling
node.parentNode
hasChildNodes()
removeChild(childNodes)
|
da ein xml-baum ja eigentlich entartet ist (wächst ja nur in eine richtung) ist es ziemlich einfach den baum vollständig zu durchlaufen.
man ruft quasi sooft node.firstchild auf bis dies None zurückliefert. dabei wird der zählindex "i" erhöht
(damit bewegt man sich tiefer in den baum)
dann ruft man child.nextSibling auf
erhöht ebenfalls einen zählindex "j"
(damit bewegt man sich seitwärts zum bruderknoten quasi)
dann fängt man von vorne an ...
wenn dann nextSibling auch None liefert
springt man mit parentNode eins hoch .. erniedrigt i setzt j auf 0 und versucht nextSibling.
naja das sollte irgendwann darauf hinauslaufen dass i = 1 und nextSibling NONE liefert.. womit der baum vollständig durchlaufen wäre.
das problem was ich nun habe.. die rekursion ..
ich müsste mir quasi immer von einem kind den tagName merken. dieses kind dann vollständig parsen und schauen ob der tagname nochmal vorkommt. wenn ja dann muss ich dieses kind töten. dann muss ich wieder hoch.. eine ebene unterhalb des ersten kindes und das ganze von vorne..
und jezz dreht sich alles bei mir im kopf!
ahhhhhhh! jemand ne idee? wie man sowas umsetzen kann?
slide