我正在努力解决这个问题一个星期。我尝试在java中编写一个可以编辑电子书的程序。我选择的电子书格式是小说类,它包含xml文件中的数据。我可以打开这个文件并在JTextComponent中生成一个源视图。我的编辑器预览和sourceview中有两个togglebuttons。他们使用相同的JTextComponent进行显示。当用户单击源视图时,它将显示选择的文件源(纯xml)。我通过解析我需要显示的数据从这个源生成预览。如果我在源视图中更改了某些东西,它也将在预览中显示,因为它是从那里生成的,我的问题是我如何能够向后反转。因此,如果我在预览中更改某些内容,它也会在源代码中发生变化。
答案 0 :(得分:0)
很难将此视为特定于JDOM的问题。潜在的表示几乎可以是任何东西。通常情况下,预览就是:最终结果的视图,不能直接编辑。如果您希望能够同时编辑源和WYSIWYG视图,则需要调查模型 - 视图 - 控制器模式。
底层XML将是您的模型。 XML编辑器视图和WYSIWYG视图(当前预览)都将是视图和控制器。目前只有你的XML编辑器才有这种情况,而预览只不过是一个视图。
从预览中更改基础XML听起来很困难,除非每个节点都能以某种方式被识别(例如通过id属性)。您需要在预览中使用一些额外的基础数据才能在另一个方向上进行此耦合。
我不确定JDOM Document是否适合您的目的。也许你最好使用类似JAXB的东西来使用简单的JavaBeans来表示模型,然后可以将其编组为XML并从XML中解组。所以你得到:
model: JavaBeans with JAXB annotations
^
|
(directly) +--------------------------------------+ (through JAXB)
| |
WYSIWYG editor: view + controller XML editor: view + controller
但这只是我的第一印象。调查现有编辑以找到执行此操作的好方法。也许检查IDE插件/模块可能很有趣,因为IDE通常允许多种类型的编辑器来更改底层数据模型。