nilsweber
I'm new here

Wie erzeuge ich zB fettgedruckte Links in einem DomEditor über die API?

Hallo!

wir arbeiten hier noch mit der 4.2er Version der API und ich bin auch schon soweit gediehen, dass ich über die API einen DomEditor korrekt befüllen kann, wobei wir u.a. die anschaulichen Beispiel unter http://www.e-spirit.com/odfs42/access/examples/de/espirit/firstspirit/access/editor/DomEditorValueEx... sehr gut geholfen haben. Das Problem ist, dass ich mit einem DefaultDomNode irgendwie nicht on-the-fly schachteln kann, weil man so einem DefaultDomNode zwar Templates, Links und Text, aber ja leider selbst keine DomNodes anhängen kann...

Das Problem ist nun, dass ich letztlich über die API einen fettgedruckten Link erzeugen möchte, aber alles, was ich derzeit herausbekomme sieht dann in FirstSpirit XML so aus:

<LANG id="§" set="1"><DOM><p>Ich bin ein Praefix : <b/><CMS_LINK contentID="967360" contentSource="rezept" linktemplate="plain_content.standard" text="Ich bin ein Testrezept" type="plain_content"/></p></DOM></LANG>

es müsste aber so aussehen:

<LANG id="§" set="1"><DOM><p>Ich bin ein Praefix : <b><CMS_LINK contentID="967360" contentSource="rezept" linktemplate="plain_content.standard" text="Ich bin ein Testrezept" type="plain_content"/></b></p></DOM></LANG>

Wie kann man das "Problem" hier pragmatisch lösen?

Danke für Hilfe,

Nils Weber

0 Kudos
3 Replies
reinartz
Crownpeak employee

Hallo Herr Weber,

zum Verschachteln muss natürlich auf dem per appendChild(..) erzeugten Knoten weitergearbeitet werden.

Um bei Ihrem Beispiel zu bleiben:

Aktuell erzeugen Sie 2 Knoten, die Sie eigentlich verschachteln möchten, jeweils auf dem gleichen Parent-DomNode. Dadurch liegen diese auf der gleichen Ebene.

Richtig wäre es, den LinkDomNode als Kind des zuvor erzeugten DomNode (b) anzulegen.

...

DefaultDomNode b = (DefaultDomNode) rootDomNode.appendChild(formatTemplateBold);
LinkDomNode link = b.appendChild(linkTemplate);

...

Viele Grüße,

Dennis Reinartz

Hallo Herr Reinhartz,

vielen Dank schonmal für Ihre mehr als hilfreiche Antwort!

Wenn Sie sich das Beispiel anhand des XML-Codes ganz oben genau anschauen, geht es ja leider nicht nur um eine Verschachtelung, sondern zwei, nämlich alles ist zusätzlich noch umschlossen von einer paragraph-Formatvorlage (FV):

<p>text text - <b><CMS_LINK.../></b></p>

wie bilde ich das denn nun ab?

dem RootNode füge ich als Kind eine paragraph-FV und bekomme dann den DefaultDomNode. Diesem füge ich dann etwas Text an, auch kein Problem... aber nun folgt eine zweite FV, nämlich die für den Fettdruck. Hier sagt mir die API aber, dass ich beim chaining kein DefaultDomNode, sondern nur noch einen schlichten DomNode bekomme und diesem kann ich laut API nichts mehr hinzufügen....

oder handelt es sich eigentlich doch wieder um ein DefaultDomNode und ist ein cast zulässig?

Grüße,

Nils Weber

0 Kudos

ich habe es einfach mal ausprobiert und tatsächlich.... Folgender upcast ist offenbar zulässig:

DefaultDomNode paragraphNode = (DefaultDomNode) rootNode.appendChild(paragraphFormatTemplate);

DefaultDomNode boldNode = (DefaultDomNode) paragraphNode.appendChild(boldFormatTemplate);

obwohl durch den kursiv hervorgehobenen Code ja eben eigentlich 'nur' ein allgemeines DomNode-Objekt herauspurzelt, handelt es sich offenbar intern doch um ein DefaultDomNode....

komisch, dass dies in der javadoc nicht vermerkt ist.. ??

Danke nochmal und Grüße aus Hamburg,

Nils Weber

0 Kudos