Jaxb объединить XMLS - PullRequest
       1

Jaxb объединить XMLS

0 голосов
/ 03 апреля 2012

Я читаю xml-файл с использованием Jaxb, теперь содержимое xml-файла увеличивается, и файл становится слишком громоздким для обслуживания, есть ли какой-нибудь способ, которым я могу модулировать xml, разбивая его на несколько файлов?Есть ли способ сделать это проще в jaxb?

Ответы [ 4 ]

1 голос
/ 04 апреля 2012

Что ж, вы можете использовать проверенный (но очень не понравившийся) метод ENTITY в вашем XML-файле, например,

<!DOCTYPE config [
  <!ENTITY subpart1 SYSTEM 'config_subpart1.xml'>
  <!ENTITY subpart2 SYSTEM 'config_subpart2.xml'>
]>
<config>
    <!-- some top-level config items in the main file
    <item1>value</item1>
    ...
    <!-- then the external parts -->
    &subpart1;
    ...
    &subpart2;
    ...
</config>

Документ XML технически идентичен, и ваш код JAXB должен работатьбез разницы.

0 голосов
/ 03 апреля 2012

Вы можете использовать комбинацию STAX и JAXB.Используйте STAX для доступа к элементу, который вы хотите прочитать, а затем сопоставьте элемент с объектом, используя JAXB.Таким образом, вы будете читать только элемент, необходимый для объекта.Вам необходимо разумно проектировать и управлять своей схемой.

0 голосов
/ 03 апреля 2012

В итоге я реализовал свой собственный XmlAdapter , который адаптирует мой LargeObject к специальному LazyLargeObjectLoader.Таким образом, основной XML-файл хранит только ссылку на XML-файл большого объекта (в виде строки), а ленивый загрузчик загружает реальный объект из своего собственного файла, когда я запрашиваю его.

Это решение хорошо работает в моем опытетак как он избегает одновременного хранения всего в памяти.

0 голосов
/ 03 апреля 2012

Вы можете прочитать большой кусок XML-документа по фрагменту.

http://jaxb.java.net/guide/Dealing_with_large_documents.html
В этом документе JAXB говорится, что в дистрибутиве JAXB RI есть несколько примеров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...