Работаем с XML в Java

Одна из стандартных задач в автоматизации - работа с XML. Почему стандартная? Потому что сам XML - один из распространнённых стандартов передачи и хранения данных. Его используют, например, в старом-добром SOAP и новом-кленовом REST интерфейсах. Так же он используется для описания конфигурации maven-проектов и является стандартным выходным форматом xUnit фреймворков. Можно долго холиварить на тему его эффективности, читаемости и удобности, однако это не изменит того факта, что с ним надо уметь работать.

Итак, что же про это пишут в интернетах? По запросу java xml в любом поисковике ты получишь статьи про варианты написания своего DOM или SAX парсера. Как хороший автоматизатор (или программист), ты знаешь, что все стандартные задачи уже решены, поэтому добавишь к запросу слово parser или library и получишь вагон и маленькую тележку готовых решений. Самое интересное в этом всём, что в сети практически нет информации о JAXB (Java Architecture for XML Binding) - технологии, которая встроена в JDK и довольно проста в использовании.

JAXB позволяет десериализовывать xml-файлы сразу в Java-объекты и наоборот. При этом тебе даже не нужно описывать Java-классы - их можно генерировать автоматически на основе xml-схемы документа. Для этого в поставке JDK есть тул под названием xjc. Более того, существуют готовые ant-таск и maven-плагин, которые могут сделать генерацию необходимых классов частью процесса сборки. Кстати, те же SOAP и REST интерфейсы предоставляют своё описание в виде WSDL- или WADL-файлов, которые можно подавать на вход xjc. Таким образом, если изменится интерфейс, поменяется его описание, и проект с тестами просто не скомплириуется. Т.е. ты узнаешь о несовместимых изменениях даже не запуская тесты =).

На сегодня хватит, а в следующий раз остановлюсь подробнее на использовании jaxb2-maven-plugin’а.

comments powered by Disqus