pbender
I'm new here

DomElement link hinzufügen

Jump to solution

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

0 Kudos
1 Solution

Accepted Solutions
pbender
I'm new here

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.

  Node insertBefore(Node newChild, Node refChild) 

           Inserts the node newChild before the existing child node refChild.

  Node replaceChild(Node newChild, Node oldChild) 

           Replaces the child node oldChild with newChild in the list of children, and returns the oldChild node.

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

View solution in original post

0 Kudos
1 Reply
pbender
I'm new here

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.

  Node insertBefore(Node newChild, Node refChild) 

           Inserts the node newChild before the existing child node refChild.

  Node replaceChild(Node newChild, Node oldChild) 

           Replaces the child node oldChild with newChild in the list of children, and returns the oldChild node.

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 Kudos