Мне нужно создать большой файл XML с простой структуройНаписать файл XML с внешними узлами
<file>
<details>
<d1></d1>
...
<dn></dn>
<task></task>
<task></task>
...
<task></task>
</details>
</file>
Я использую JAXB для Xml - отображение POJO. Поэтому у меня есть FilePojo, у которого есть список задач. Задачи хранятся в базе данных, потому что они в больших количествах, поэтому я не могу просто восстановить их в памяти сразу.
Как я могу выполнить действие маршала?
код я до сих пор связан с этим действием, используя XMLStreamWriter
XMLOutputFactory factory = XMLOutputFactory.newInstance();
XMLStreamWriter xmlsw = new IndentingXMLStreamWriter(factory.createXMLStreamWriter(writerXml));
JAXBContext jc = JAXBContext.newInstance(File.class);
Marshaller m = jc.createMarshaller();
JAXBElement<File> jx = new JAXBElement<>(new QName("http://namespace", "File"), File.class, file);
m.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.TRUE);
m.marshal(jx, xmlsw);
объект Файл имеет все детали, кроме списка задач.
Tricky. Не могли бы вы поделиться своим POJO для файла и как List of Tasks вписывается в это? Мое лучшее предположение заключается в том, чтобы не отображать список, а вместо этого предоставить некоторый список , который вы можете сохранить в памяти (только идентификаторы для своих задач), а затем предоставить настраиваемый маршаллер на основе XmlMapper на TaskKey для извлечения данных из БД по мере необходимости. Но это по-прежнему предполагает, что материал будет написан для каждого поля в базовом потоке, а не только в буфер, который будет возвращен после завершения всего сортировки ... –
Jan
@Jan У меня нет точного POJO, потому что это упрощение реальной системы , Не могли бы вы дать мне более подробную информацию, связанную с обычным маршаллером? Как это будет работать? – danidacar