Проверка с использованием JAXB и Stax для маршалирования XML-документа

StackOverflow https://stackoverflow.com/questions/2471149

  •  20-09-2019
  •  | 
  •  

Вопрос

Я создал 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-документы без нехватки памяти, поэтому, если есть лучший способ сделать это, дайте мне знать.

Это было полезно?

Решение

Некоторые реализации Stax, похоже, способны проверять выходные данные.Смотрите следующий ответ на аналогичный вопрос:

Использование Stax2 с Woodstox

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top