# Teilbaum aus DOM-Baum erzeugen



## netopan (15. Jun 2010)

Hallo,

ich möchte gerne aus einem DOM-Baum nur ganz spezielle Elemente herausziehen, die dann aber wiederrum einen DOM-Baum darstellen sollen (z.B. einen Teilbaum der alles außer der Navigation enthält, oder einen der nur Überschriften enthält).

Ich weiß, dass man den DOM-Baum mit XPath parsen kann, aber wie finde ich einen XPath-Ausdruck, der mir alles außer der Navigation liefert und vor allem: wie kriege ich das Ergebnis wieder in ein w3c.dom.document? (im Moment kann ich z.B. //title Elemente rausziehen und diese in eine NodeList speichern - aber das ist ja kein Baum...).

Danke für Eure Hilfe!

Grüße


----------



## musiKk (15. Jun 2010)

Ein XML-Dokument braucht immer genau ein root-Element, von daher kann die NodeList alleine noch kein Dokument darstellen. Ansonsten ist das aber nicht problematisch. Ein [c]Document[/c] kann man mit dem [c]DocumentBuilder[/c] erzeugen. Dort können dann die Elemente angehängt werden.


----------



## netopan (16. Jun 2010)

Vielleicht hab ich mich nicht ganz verständlich ausgedrückt, daher probier ichs nochmal:

Ich habe bereits ein DOM Document, also einen DOM-Baum. Aus diesem möchte ich nun Teile entfernen um einen Teilbaum zu erhalten. 

Eine Vorgabe ist bspw. nur die Navigation zu entfernen. Meiner Ansicht müsste das z.B. mit removeChild() gehen. Dann würde mein Baum auch ein Baum bleiben und müsste nicht in eine Liste und dann wieder in einen Baum transformiert werden... 

Aber wie erkenne ich bspw. ein Navigationselement? Bzw. gibt es nicht einfache Methoden der DOM API, die das evt. übernehmen? Ich habe bisher nirgendwo welche gefunden...

Danke!


----------



## musiKk (17. Jun 2010)

netopan hat gesagt.:


> Aber wie erkenne ich bspw. ein Navigationselement? Bzw. gibt es nicht einfache Methoden der DOM API, die das evt. übernehmen? Ich habe bisher nirgendwo welche gefunden...



Die DOM API ist imho enorm sperrig und umständlich zu bedienen.

Zum Transformieren ist XSLT gut geeigent.
An und für sich sehe ich aber auch kein Problem darin, die nötigen Elemente per XPath zu suchen und in ein neues [c]Document[/c] einzufügen.


----------



## netopan (17. Jun 2010)

musiKk hat gesagt.:


> An und für sich sehe ich aber auch kein Problem darin, die nötigen Elemente per XPath zu suchen und in ein neues [c]Document[/c] einzufügen.



Ja, würde ich auch so sehen - hilft mir momentan aber noch nicht weiter.

Um die Frage noch etwas zu konkretisieren:
Wie würde ein XPath-Ausdruck aussehen, der mir aus beliebigen XML-Dokumenten immer die Navigationselemente selektiert (sofern sie denn überhaupt vorhanden sind)???

Ich habe mir unterschiedliche Webseiten angesehen und keine Übereinstimmung bei der Wahl dieser Elemente feststellen können (und auch sonst nirgendwo was dazu gefunden).


----------



## musiKk (17. Jun 2010)

Na das hängt natürlich von den verwendeten Dokumenten ab. Einen Standard oder so gibt es nicht.


----------

