RCP Formularbasierter XML-Editor (bzw. vorhandenen XML-Editor integrieren)

slawaweis

Bekanntes Mitglied
Hallo,

ich suche eine Möglichkeit einen formularbasierten XML-Editor, analog zum dem "Plug-in Manifest Editor", zu erstellen. Das Kernproblem ist die Integration eines vorhandenen XML-Text-Editors, so dass eine XML-Datei über ein Formular oder direkt als Text bearbeitet werden kann und die jeweiligen Änderungen synchronisiert werden.

Ich habe bereits einen eigenen FormEditor erstellt, mit mehreren Pages, nur weis ich nicht, wie ich einen vorhandenen XML-Editor rein bekomme. Ich habe auch schon von XMLMultiPageEditorPart abgeleitet, nur ist diese Lösung nicht sauber. Bei beiden Varianten weis ich nicht, wie ich die Eingaben zwischen Formular und Text-Editor synchronisieren kann, ohne die komplette XML-Datei als String hin und her zu schicken. Noch eine Möglichkeit wäre ein komplett eigener XML-Editor, basierend auf dem Beispiel Plugin, nur möchte ich diese Möglichkeit wegen des Aufwandes nach Hinten stellen.

So wollte ich fragen, ob jemand Erfahrung damit gemacht hat, so einen Editor zu erstellen. Diesen Thread habe ich bereits gelesen:

http://www.java-forum.org/plattformprogrammierung/88910-xml-editor-project.html

Slawa
 
Das synchronisieren ist tatsächlich nicht ohne und auch der Manifest Editor macht damit keinen sonderlich guten Job. Xtext ist ziemlich gut darin, aber ist eher für textuelle Sprachen gedacht, nicht XML Dialekte.
Mit EMF solltest du die besten Chancen haben. Wenn im Formular Editor editiert wird, kannst du den geänderten Teil als String serialisieren lassen und dann im Document ersetzen. Wenn die Formattierung keine Rolle spielt kannst du natürlich auch immer komplett serialisieren.
Wenn das XML textuell geändert wird musst du entweder komplett neu laden und dem Form Editor den neuen Input setzen, oder du lädst, machst zB mit EMF Compare einen Diff und wendest den Diff auf das Modell im Form Editor an.
 
danke für die Antwort. Meine Vorstellung war eigentlich ein gemeinsamer DOM-Baum, woran das Formular und der Texteditor arbeiten. Habe aber bisher keine solche Lösung gefunden. EMF wäre, denke ich, aufwändiger als DOM, falls man es komplett selber implementiert.

Kennt jemand einen offenen XML-Editor für Eclipse, worauf man über Extensions aufsetzen kann? Bei dem Editor aus WTP muss man in den Quelltext rein.

Slawa
 
EMF Objekt Baum, oder DOM Baum, wo ist da jetzt der Unterschied?
EMF gibt dir zumindest die Werkzeuge an die Hand um so eine synchronisation umzusetzen, bei DOM hast du es schwieriger.
Ein textueller Editor kann auch nicht einfach so auf einem DOM arbeiten, denn der Text wird vom User editiert und hat damit auch ungültige Zwischenstände die sich überhaupt nicht in ein DOM überführen lassen weil es kein gültiges XML ist.
 
EMF Objekt Baum, oder DOM Baum, wo ist da jetzt der Unterschied?
darin, dass ich EMF noch nicht kenne 😀

EMF gibt dir zumindest die Werkzeuge an die Hand um so eine synchronisation umzusetzen, bei DOM hast du es schwieriger.
Ein textueller Editor kann auch nicht einfach so auf einem DOM arbeiten, denn der Text wird vom User editiert und hat damit auch ungültige Zwischenstände die sich überhaupt nicht in ein DOM überführen lassen weil es kein gültiges XML ist.
der Texteditor hat natürlich sein eigenes Dokumentenmodel, welches in den gemeinsamen DOM übertragen wird. Es kommt auch nur das rein, was korrekt ist. Beim Laden von nicht-validen XML-Dokumenten wird das Formular gesperrt, bis das Dokument valid ist. Aber am liebsten wäre es mir, wenn ich so einen Editor erst gar nicht schreiben müsste 😀

Slawa
 
Wie gesagt, Xtext ist am nächsten dran, dort geht das sehr gut aber einen generischen XML Editor der soetwas kann ist mir nicht bekannt.
EMF gibt dir die Werkzeuge an die Hand (Xtext verwendet dafür auch EMF), aber etwas Arbeit wirst du investieren müssen.
 
Ich habe das gleiche Problem. Hast du mittlerweile eine Lösung gefunden?
leider nein. Ich habe es jetzt so gemacht, dass es nur einen Formulareditor gibt, mit welchem man die gesamte XML-Datei bearbeiten kann. In der Formular-Toolbar gibt es eine Synchronisationstaste. Wenn jemand es will, kann er die Datei auch in einem beliebigen XML-Texteditor direkt bearbeiten und muss dann selber manuell im Formulareditor synchronisieren. Das ist eine Zwischenlösung. Später werde ich versuchen das miteinander zu verbinden. Vielleicht gibt es bis dahin auch schon eine fertige Lösung.

Slawa
 

Zurück
Oben