2010-11-18 5 views
0

Я должен создать настольное приложение в Java 6. Программа должна иметь возможность связываться с другой системой, используя XML-файлы (отправка/получение). Каждый отдельный XML-файл связан с его XSD, тегами, описывающими его содержимое, имя пользователя и статус документа. Приложение должно предоставлять такие функции, как поиск, модификация и т. Д. XML-контент.Хранение файлов XML в базе данных

Вопрос: как хранить все эти данные, сохраняя логические соединения?

У меня возникла идея сохранить его с помощью базы данных XML - BaseX. Другими словами, хранение XML-файлов с информацией, связанной с ними в одном большом файле XML (базы данных).

Пример базы данных:

<?XML VERSION="1.0"?>
<mySampleRecord id="1">
<XMLcontent> // Content of XML file (...) </XMLcontent>
<XMLschema> // Content of XSD file (...) </XMLschema>
<tags>j2ee java xml</tags>
<username>File Owner</username>
<status>received</status>
</mySampleRecord>
<mySampleRecord id="2">
<XMLcontent> // Content of XML file (...) </XMLcontent>
<XMLschema> // Content of XSD file (...) </XMLschema>
<tags>doc xls mdb</tags>
<username>Admin</username>
<status>sent</status>
</mySampleRecord>

Мне было также интересно, если это возможно Basex читать <XMLContent> узел, а затем обработать его содержимое, как XML позволяет мне выполнять операции XQuery.

Надежда его понятно;)

Спасибо за любые советы и предложения.

ответ

1

Не совсем понял. :)

Итак, вы хотите сохранить несколько XMLFiles с соответствующей схемой в другом файле XML?

Зачем? Просто обрабатывайте каждый XML-файл по отдельности. Имейте их как .xml-файлы внутри вашего .jar .. таким образом, каждый клиент может получить к нему доступ.

веселит

0

Если я правильно вас понял, вы должны создать таблицу SAMPLE_RECORD с полями ID (PK) user_name статус

затем создать таблицу тегов с полями record_id (FK для записи таблицы) tag

Создать класс SampleRecord Теперь напишите код, который анализирует XML и создает экземпляры SampleRecord. Затем реализуйте логику, которая хранит коллекцию SampleRecord в БД и читает ее оттуда. Вы можете использовать ORM или просто старый добрый JDBC.

Все.

+0

Я не думаю, что он использует реляционную БД, похоже, что он рассматривает базовую базу данных Xml (NXD). В этом случае нарезка и нарезка для хранения выполнялась бы БД. – StaxMan

+0

Наконец-то я нашел отличное решение для своих нужд. Я решил использовать SQLite вместо базы данных XML. Теперь у меня есть сервер без контейнера для моих данных, и я могу использовать выражения SQL, чтобы получить то, что я хочу. Осталось только создать базу данных. AlexR Я собираюсь использовать ваше решение в этом случае. Всем спасибо! – monczek