aVogt
Occasional Collector

DomElement als Text ausgeben

Hallo,

für einen Export von Seiten benötige ich den "reinen" text (ohne Links, Formatierung etc.).
Mit Nachfolgenden Zeilen habe ich versucht den Inhalt von einem DomElement zu bekommen.

FormField ff = formData.get(lang,"name");
DomElement de = (DomElement) ff.get();
String text = de.totext(false);


Das funktioniert auch fast. Das Ergebnis sieht so aus:
     FIRSTSPIRIT_LINK    FIRSTSPIRIT_LINK
Eigentlich müsste das herauskommen, habe ich zumindest gehofft:
     zu den Beratungsangeboten Arbeit und Bildung zu den Förderprogrammen Arbeit und Bildung

Ich habe schon versucht über

Element el = de.get();

NodeList nl = el.getChildNodes();            

context.logInfo("laenge: " +  nl.getLength() );

for(int anz = 0; anz < nl.getLength(); anz++) {

...

}

etwas herauszubekommen, aber ohne Erfolg.


Aussehen des DomElementes siehe Anhang.

Was habe ich falsch gemacht?
Was muss ich tun, damit die Linknamen ausgegeben werden, statt FIRSTSPIRIT_LINK?

Grüße aus Dresden
Andreas

Labels (1)
Tags (1)
0 Kudos
6 Replies
MarcusDau
Occasional Collector

Re: DomElement als Text ausgeben

Hy!

Ich mache das ein wenig "unsauberer", aber funktioniert problemlos:

winEintrag.toString.replaceAll("<[^>]*>","")

Einfach alle Tags mit regulärem Ausdruck entfernen.

Hoffe, das hilft Dir weiter!

Grüße

Marcus

0 Kudos
aVogt
Occasional Collector

Re: DomElement als Text ausgeben

Danke. An so was hab ich auch schon gedacht, wollte es aber etwas "sauberer" machen.

Vieleicht hat ja noch jemand einen Tipp.

Edit:

Ganz eigenartig. Auch mit der von Dir vorgeschlagenen Methode funktioniert es nicht. "FIRSTSPIRIT_LINK" steht immer noch da.

Irgendwie liegt es an dem Link selber. Lösche ich den Link, speichere den Absatz und setze dann den Link neu (auf die gleiche Zielseite) ist alles gut. Dann wird mir der Linktest ausgegeben. Auch mit toText(false);

Könnte das etwas mit dem Update auf 2.4R4 zu tun haben? Leider kann ich nicht mehr nachsehen, ob es vorher (also bei 2.4R2) funktionierte. Mir ist erst jetzt der "FIRSTSPIRIT_LINK" aufgefallen.

Grüße

Andreas

0 Kudos
stephan
I'm new here

Re: DomElement als Text ausgeben

Hallo,

getSearchableString(Language language) sollte den Inhalt jeder Editorkomponente als Text ausgeben.

Beispiel:

$CMS_VALUE(#global.section.data.get("dom").editor.getSearchableString(#global.language))$

Trat das Problem mit "FIRSTSPIRIT_LINK" nur bei einem Link auf, oder ist das ein generelles Problem das jetzt bei allen Eingabekomponenten auftritt?

Viele Grüße

Jörg

0 Kudos
aVogt
Occasional Collector

Re: DomElement als Text ausgeben

Hallo Jörg,

das Problem mit  dem "FIRSTSPIRIT_LINK" tritt wie ich es mitbekommen habe nur bei Links auf (insgesammt 17 Stellen im gesamten Webauftritt.

Ihr Bsp. liefert mir folgendes:

http://www.sab.sachsen.de/de/p_is/index.jsp Infrastruktur & Gemeinwesen externeurl

Das ist schon mal schön, aber gibt es eine Möglichkeit, dass der Linktyp und ggf. die Url nicht mit ausgegeben wird?

Eine Frage zu dem Beisspiel (ich verwende das in einem Script):

getData() ist jetzt deprecated. Somit gibts auch keinen getEditor() mehr. Das lieferte ein DomEditorValue. Darin gibts getSearchableString

Wenn ich nun getFormdata() wie empfohlen verwende habe ich noch keine Möglichkeit gefunden an ein DomEditorValue heranzukommen um getSearchableString aufzurufen.

Wie bzw. was muss ich aufrufen?

Grüße

Andreas

0 Kudos
stephan
I'm new here

Re: DomElement als Text ausgeben

Hallo Andreas,

um das Problem mit der deprecated Methode zu vermeiden kann man natürlich noch einen anderen Weg gehen.

Über getFormData().get(Language language, String fieldName).get() erhält man ein DomElement auf dem man über toText(true) einen String bekommt der lediglich den Text enthält.

Wenn das Problem mit "FIRSTSPIRIT_LINK" an mehreren Stellen auftritt könnte es natürlich sein, dass es mit der Migration zusammen hängt. Evtl. enthalten die Logs Informationen und Fehlermeldungen zu den betreffenden Seiten.

Viele Grüße

Jörg

0 Kudos
aVogt
Occasional Collector

Re: DomElement als Text ausgeben

Hallo Jörg,

Das mit dem toText(..) hatte ich schon verwendet (siehe ersten Eintrag).

Da ich aber das "FIRSTSPIRIT_LINK" erhielt, habe ich gedacht, es gibt einen noch anderen Weg bzw. ich habe etwas falsch gemacht.

Gibt es nicht doch noch irgendeine Möglichkeit ein getSearchableString aufzurufen? Ich habe u.a. noch eine SectionList. Mit dem getSearchableString bekomme ich ganz einfach den Text (wenn ich das deprecated getData()) verwende. Mit getFormData() muss ich mir mühevoller den Inhalt holen:
Über die SectionList iterieren, somit erhalte ich eine EditorSectionImpl. Da habe ich das Problem, dass eine *Impl-Klasse nicht verwendet werden soll. Wenn ich über EditorSectionImpl iteriere komme ich dann zu einem Editor, wo getSearchableString verfügbar ist.
Kann ich die EditorSectionImpl irgendwie umgehen?

Zu dem Problem mit "FIRSTSPIRIT_LINK":
Die Seiten werden ordnungsgemäß generiert, also kein Fehler, keine Warnung, nichts. Die Links funktionieren auch, sowohl in der Vorschau als auch in den veröffentlichten Seiten.

Ich würde das mal als gegeben hinnehmen. Wenn ich einen neuen Link anlege, bekomme ich den Linktext und kein  "FIRSTSPIRIT_LINK".

Grüße

Andreas

0 Kudos