DomElement link hinzufügen
Author: pbender
Publication Date: 11/22/2012 15:42
Hallo zusammen,
ich möchte in einem DomElement einen Link hinzufügen, hierzu habe ich die Möglichkeit mit appendChild und removeChild die DomNodes zu manipulieren. Gibt es hierzu weitere Möglichkeiten, die mir das Bearbeiten eines DomElements erlauben?
Da ich mit appendChild nur DomNodes anhängen kann, fehlt mir die notwendige Funktionlität um das DomElement sauber zu bearbeiten.
Beispiel:
DomElement
|_ TextDomNode "Das ist meine erstes Text Element"
|_ TextDomNode "Das ist mein zweites Text Element"
Möchte ich nun einen Link auf das Wort "erstes" platzieren, muss ich beide DomElemente entfernen, um diese anschließend mit appendChild wieder inkl. Link anzuhängen. Mit appendChild lassen sich jedoch nur FormatTemplates, Links, String und TableFormatTemplates hinzufügen und keine DomElement selbst.
Gibt es hierzu einen sauberen Ansatz?
Hier ist noch ein veranschaulicheres Beispiel:
[0] = TextDomNode "Hallo, ich bin der Peter"
[1] = TextDomNode "klingt komisch, ist aber so"
[2] = TextDomNode "Löwenzahn"
Wenn ich nun Peter als Link haben möchte, muss ich den String splitten und ein TextDomNode und LinkDomNode hinzufügen
[0] = TextDomNode "Hallo, ich bin der "
[1] = LinkDomNode "Peter"
[2] = TextDomNode "klingt komisch, ist aber so"
[3] = TextDomNode "Löwenzahn"
Da ich aber nur neue DomNode anhängen kann, muss ich alle anderen DomNodes entfernen und in der richtigen Reihenfolge wieder einfügen.
Desweiteren kann ich nur Strings, Links etc hinzufügen. D.h. ich muss aus dem TextDomNode ein String machen, um diesen wieder über appendDomNode hinzufügen zu können.
Viele Grüße
Philipp Bender
-
Author: pbender - 11/26/2012 10:43
Hallo,
ich habe eine Variante gefunden, mit der man relativ schnell und gut das Problem lösen kann. Die DomNodeImpl hat eine public Methode getNode() die ein org.w3c.dom.Node zurückliefert. Mit dem org.w3c.dom.Node habe ich nun alle Funktionen die ich benötige und kann den DomNode beliebig manipulieren.
NodeinsertBefore(Node newChild, Node refChild)Inserts the node
newChildbefore the existing child noderefChild.NodereplaceChild(Node newChild, Node oldChild)Replaces the child node
oldChildwithnewChildin the list of children, and returns theoldChildnode.Da man durch das DomNode Interface nur eine begrenzte Funktionalität zur Verfügung hat, sollte man diese in das Interface nachziehen oder eine andere Möglichkeit bieten solche DOM-Manipulationen durchzuführen.
Viele Grüße
Philipp Bender
0
Vous devez vous connecter pour laisser un commentaire.
Commentaires
1 commentaire