SpringOXM etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
SpringOXM etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

25 Haziran 2019 Salı

SpringOXM - Nesneyi XML'e Çevirir

Giriş
SpringOXM projesi verilen nesneyi XML'e çevirir ve XML'den nesneye çevirir. Aslında aynı bir ORM gibi düşünülebilir.

Maven
Şu satırı dahil ederiz.
<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-oxm</artifactId>
  <version>4.3.7.RELEASE</version>
  <scope>compile</scope>
</dependency>
Kullanılan Kütüphaneler
Marshall ve Unmarshall işlemi için şu kütüphaneler kullanılabilir.
- JAXB : İki tane sınıf sunar Jaxb1Marshaller, Jaxb2Marshaller
- Castor
- XMLBeans
- JiBX
- XStream

11 Mayıs 2018 Cuma

SpringOXM Jaxb2Marshaller Sınıfı

constructor
Şöyle yaparız.
Jaxb2Marshaller bean = new Jaxb2Marshaller();
marshall metodu
Örnek
Elimizde şöyle bir kod olsun. Burada sınıf üzerinde JAXB anotasyonları kullanılıyor
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class Person {
  private String name;
  private int age;
  @XmlElement
  public String getName() {
    return name;
  }
  public void setName(String name) {
    this.name = name;
  }
  @XmlElement
  public int getAge() {
    return age;
  }
  public void setAge(int age) {
    this.age = age;
  }
}
Jaxb2Marshaller nesnesini yaratmak için şöyle yaparız
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.oxm.jaxb.Jaxb2Marshaller;
@Configuration
public class XMLConfig {
  @Bean
  public Jaxb2Marshaller marshaller() {
    Jaxb2Marshaller marshaller = new Jaxb2Marshaller();
    marshaller.setClassesToBeBound(Person.class); // Include more classes if needed
    return marshaller;
  }
}
Jaxb2Marshaller nesnesini kullanmak için şöyle yaparız
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class XMLController {
  @Autowired
  private Jaxb2Marshaller marshaller;
  @PostMapping("/unmarshal")
  public Person unmarshalXml(@RequestBody String xmlData) {
    return (Person) marshaller.unmarshal(new StringSource(xmlData));
  }
}
setClassesToBeBound metodu
Şöyle yaparız.
bean.setClassesToBeBound(MyBean.class);
setContextPath metodu
Şöyle yaparız.
bean.setContextPath("ch.sahits.game.helloworld");