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