Я создал схему XML (foo.xsd) и использовал xjc
для создания классов привязки для JAXB. Допустим, корневым элементом является collection
, и я пишу N document
объектов, которые являются сложными типами.
Поскольку я планирую записывать большие файлы XML, я использую Stax для записи корневого элемента collection
, а JAXB - для сортировки поддеревьев документов с использованием Marshaller.marshal(JAXBElement, XMLEventWriter)
. Это подход, рекомендуемый неофициальным руководством пользователя jaxb .
Мой вопрос: как я могу проверить XML, пока он распределяется? Если я связываю схему с маршаллером JAXB (используя Marshaller.setSchema()
), я получаю ошибки валидации, потому что я только маршаллизирую поддерево (это жалуется, что он не видит корневой элемент collection
"). Я предполагаю, что я действительно хочу сделать, это связать схему с Stax XMLEventWriter
или что-то в этом роде.
Любые комментарии по этому общему подходу будут полезны. По сути, я хочу иметь возможность использовать JAXB
для маршалинга и демарширования больших XML-документов без нехватки памяти, поэтому, если есть лучший способ сделать это, дайте мне знать.