Синтаксический анализ и редактирование XML с помощью Jdom в Java - PullRequest
0 голосов
/ 18 октября 2011

Я борюсь с этой проблемой уже неделю. Я пытаюсь написать программу на Java, которая может редактировать электронные книги. Мой выбранный формат электронной книги - художественная книга, которая содержит свои данные в XML-файле. Я могу открыть этот файл и создать исходный вид в JTextComponent. В моем предварительном просмотре и просмотре исходного кода есть две кнопки переключения. Они используют тот же JTextComponent для отображения. Когда пользователь щелкает по исходному виду, он отображает выбранный источник файла (обычный xml). Я генерирую предварительный просмотр из этого источника, анализируя данные, которые мне нужно отобразить. Если я изменю что-то в исходном виде, это будет отображаться и в предварительном просмотре, потому что он сгенерирован оттуда, моя проблема в том, как я могу сделать это в обратном направлении. Так что, если я изменю что-то в предварительном просмотре, это также изменится и в источнике.

1 Ответ

0 голосов
/ 18 октября 2011

Трудно увидеть это как вопрос, специфичный для JDOM.Базовое представление может быть почти любым.Обычно предварительный просмотр - это просто вид конечного результата, который нельзя редактировать напрямую.Если вы хотите иметь возможность редактировать как источник, так и через представление WYSIWYG, вам нужно исследовать шаблон модель-представление-контроллер.

Базовым XML будет ваша модель.Представление редактора XML и представление WYSIWYG (ваш текущий предварительный просмотр) будут тогда представлениями И контроллерами.В настоящее время это относится только к вашему редактору XML, тогда как предварительный просмотр - это не что иное, как представление.

Изменение базового XML из предварительного просмотра звучит сложно, если только каждый узел не может быть как-то идентифицирован (например, через атрибут id),Вам понадобятся дополнительные базовые данные в предварительном просмотре, чтобы связать их в другом направлении.

Я не уверен, что документ JDOM - лучшая модель для ваших целей.Возможно, вам лучше использовать что-то вроде JAXB, чтобы иметь простые JavaBeans для представления модели, которая затем может быть преобразована в XML и демонтирована из XML.Итак, вы получите:

                    model: JavaBeans with JAXB annotations
                      ^
                      |
    (directly) +--------------------------------------+ (through JAXB)
               |                                      |
WYSIWYG editor: view + controller             XML editor: view + controller

Но это только мое первое впечатление.Исследуйте существующие редакторы, чтобы найти хороший метод для этого.Возможно, было бы интересно проверить плагины / модули IDE, поскольку IDE обычно позволяют редакторам нескольких типов изменять базовую модель данных.

...