Хранение файлов XML в базе данных

Мне нужно создать настольное приложение на Java 6. Программа должна иметь возможность взаимодействовать с другой системой с помощью файлов XML (отправка/получение). Каждый отдельный файл XML связан с его XSD, тегами, описывающими его содержимое, имя пользователя и статус документа. Приложение должно обеспечивать такие функции, как поиск, изменение и т. д. 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.

Надеюсь понятно ;)

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


person monczek    schedule 18.11.2010    source источник


Ответы (2)


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

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

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

ваше здоровье

person chzbrgla    schedule 18.11.2010

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

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

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

Вот и все.

person AlexR    schedule 18.11.2010
comment
Я не думаю, что он использует реляционную базу данных, похоже, он рассматривает возможность использования базы данных Native Xml (NXD). В этом случае нарезка и нарезка для хранения будет выполняться БД. - person StaxMan; 18.11.2010
comment
Наконец-то я нашел идеальное решение для своих нужд. Я решил использовать SQLite вместо базы данных XML. Теперь у меня есть бессерверный контейнер для моих данных, и я могу использовать выражения SQL, чтобы получить то, что хочу. Осталась только одна проблема — создать базу данных. AlexR Я собираюсь использовать ваше решение в этом случае. Всем спасибо! - person monczek; 19.11.2010