develNotes

/*айтишные заметки*/

30.11.2011

Связывание данных - JAXB.

Для связывания классов с их XML представлением в Java есть разные способы - JAXB, Castor, XStream. Но JAXB пожалуй самый простой, он входит в Java SE, хорошо подходит для простых задач и при использовании классов, сгенерированных по XSD-схеме. В предыдущем посте JAXB преобразует данные, которыми оперирует веб-сервис - это происходит автоматически, когда объект передается методу/возвращаются данные. Посмотрим немного подробнее, как выполнить преобразование произвольного объекта в xml и обратно (маршалинг/демаршалинг). Использовать JAXB очень легко. Допустим у нас есть класс, который описывает свойства автомобиля:
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlAttribute;

@XmlRootElement(name="auto")
public class Auto {
 private Boolean newAuto;
 private String autoMarka;
 private String autoModel;
 private Integer horsePower;

 @XmlAttribute(name = "new")
 public Boolean getNewAuto(){
  return newAuto;
 }
 public void setNewAuto(Boolean value){
  newAuto = value;
 }
 @XmlElement(name = "marka",required = true)
 public String getAutoMarka(){
  return autoMarka;
 }
 public void setAutoMarka(String value){
  autoMarka = value;
 }
 @XmlElement(name = "model")
 public String getAutoModel(){
  return autoModel;
 }
 public void setAutoModel(String value){
  autoModel = value;
 }
 @XmlElement
 public Integer getHorsePower(){
  return horsePower;
 }
 public void setHorsePower(Integer value){
  horsePower = value;
 }
}
Теги: jaxb java programming     Далее

23.09.2012

Автоматизация маппинга XML - Java.

Я уже упоминал об одном из способов связывания Java классов с их XML представлением - JAXB. Если стоит задача создания структуры Java классов для преобразования данных из XML документа заданного формата с помощью JAXB, то для этого обычно используется утилита jaxb-xjc (Java Architecture for XML Binding Binding Compiler): достаточно иметь XSD файл со схемой документа, чтобы сгенерировать структуру классов. А что если схемы нет, а есть только пример самого XML документа? Конечно, ничто не мешает создать классы для JAXB вручную, но если исходные XML данные сложны по структуре и велики по объему - то зачастую это может оказаться лишней тратой времени. С помощью утилиты  trang можно создать схему на основе примера XML. Допустим есть такой XML файл и нам нужно создать соответствующие ему Java классы для JAXB: example.xml:
<data type="dictionaries">
 <dictionary name="buildings">
 <itemnum>2</itemnum>
 <comment>Buildings</comment>
 <element>
  <id>0</id>
  <name>building 1</name>
  <cost>10000.50</cost>
 </element>
 <element>
  <id>1</id>
  <name>building 2</name>
  <cost>20000.50</cost>
 </element>
 </dictionary>
</data>
Теги: jaxb java programming xml     Далее