- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Search and Replace Script CMS_INPUT_DOM
Hallo zusammen,
ich bin gerade dabei ein Script zu schreiben, welches dem Redakteur ermรถglicht zwei Strings einzugeben, welche dann anschlieรend fรผr ein Search & Replace verwendet werden.
Ich durchsuche rekursiv alle Kind-Elemente des Elements, auf dem der Redakteur das Script gestartet hat und mรถchte dort innerhalb des Contents nach dem Search String suchen und mit dem Replace String ersetzen.
Bei "einfachen" CMS_INPUT_TEXT-Feldern ist das auch kein Thema. Ich bin allerdings nun an der Stelle, wo ich ein CMS_INPUT_DOM-Feld habe..
Meine "replace"-Funktion bekommt ein FormField รผbergeben.
Bisher habe ich folgendes:
Object fieldVal = field.get();
if(fieldVal instanceof String) {
...
} else if(fieldVal instanceof DomElement) {
if(!field.isEmpty()) {
DefaultDomNode root = ((DomElement) fieldVal).getRoot();
Iterable<DomNode> children;
children = root.getChildren(true);
for(DomNode child : children) {
FormatTemplate formatTemplate = child.getFormatTemplate();
DomNodeType nodeType = child.getNodeType();
if(nodeType.equals(DomNodeType.TEXT)) {
TextDomNode tempNode = (TextDomNode) child;
String nodeTextContent = tempNode.getText();
}
}
}
}
Ich mรผsste nun in jedem Kind-Element den Text extrahieren und nach meinem "Search"-String suchen. Wenn etwas gefunden wurde, muss der Text mit meinem "Replace"-String ersetzt werden.
Anschlieรend muss dann das ursprรผngliche Element entfernt werden und ein neues (mit dem replaced Text) an dessen Stelle platziert werden (replaceChild() ?).
Ist das der richtige Ansatz? Falls jemand andere Lรถsungsvorschlรคge hat, bitte gerne posten
- Labels:
-
Developers
-
Knowledgebase
Accepted Solutions
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Ich habe es nun geschafft, meine รnderungen an den Kindelementen innerhalb des Dom-Feldes zu persistieren.
Innerhalb des Loops war folgende Zeile die Lรถsung:
child.getParent().replaceChild(child, replaced);
Wobei "replaced" ein String war, welcher meinen geรคnderten Text nach dem Ersetzen enthielt.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Kann mir jemand sagen, wie die Nutzung der DomNode.replaceChild(DomNode var1, String var2) gedacht ist? Das ist gerade die Stelle, an der ich konkret nicht weiter komme.
Welcher String wird hier รผbergeben bzw. sollte รผbergeben werden?
Ich bin davon ausgegangen, ich รผbergebe die zu ersetzende Node und die Node, mit der ich ersetzen mรถchte.
LG
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Ich habe es nun geschafft, meine รnderungen an den Kindelementen innerhalb des Dom-Feldes zu persistieren.
Innerhalb des Loops war folgende Zeile die Lรถsung:
child.getParent().replaceChild(child, replaced);
Wobei "replaced" ein String war, welcher meinen geรคnderten Text nach dem Ersetzen enthielt.

