직렬화 : java object를 XML로
역직렬화 : XML을 java object로
위 내용을 도와주는 api가 JAXB(Java Architecture for XML Binding)
JAXB Annotation
@XmlRootElement : XML의 Root Element명을 정의
@XmlElement : XML의 Element명을 정의
@XmlType : XML스키마 이름과 namespace 정의
propOrder 속성을 이용해서 XML 표현 시 요소들의 표현 순서를 정의
@XmlElementWrapper : 다른 XML 요소들을 감싸는 역할. List같은 컬렉션 객체들을 XML 변환 시...
예제1. Java Object를 XML로 변환
package jaxb;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
public class TestJAXB {
public static void main(String[] args) {
UserDto userDto = setUser();
try {
File file = new File("C:\\userDto.xml");
JAXBContext jaxbContext = JAXBContext.newInstance(UserDto.class);
Marshaller jaxbMarshaller = jaxbContext.createMarshaller();
jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
jaxbMarshaller.marshal(userDto, file);
jaxbMarshaller.marshal(userDto, System.out);
} catch (JAXBException e) {
e.printStackTrace();
}
}
public static UserDto setUser() {
UserDto userDto = new UserDto();
userDto.setName("XMLstudy");
userDto.setAge(25);
List<String> list = new ArrayList<String>();
list.add("XML list 01");
list.add("XML list 02");
list.add("XML list 03");
userDto.setMessages(list);
return userDto;
}
}
UserDto.java
package jaxb;
import java.util.List;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class UserDto {
private String name;
private int age;
private List<String> messages;
public String getName() {
return name;
}
@XmlElement
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
@XmlElement
public void setAge(int age) {
this.age = age;
}
public List<String> getMessages() {
return messages;
}
@XmlElementWrapper(name="messages")
@XmlElement(name="message")
public void setMessages(List<String> messages) {
this.messages = messages;
}
@Override
public String toString() {
return "UserDto [name=" + name + ", age=" + age + ", messages=" + messages + "]";
}
}
java application 실행결과:
XML을 java object로 변환
package jaxb;
import java.io.File;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Unmarshaller;
public class TestJAXBsample {
public static void main(String[] args) {
try {
File file = new File("C:\\userDto.xml");
JAXBContext jaxbContext = JAXBContext.newInstance(UserDto.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
UserDto customer = (UserDto) jaxbUnmarshaller.unmarshal(file);
System.out.println(customer.toString());
} catch (JAXBException e) {
e.printStackTrace();
}
}
}
결과:
출처:
'자바' 카테고리의 다른 글
@Qualifier (0) | 2020.12.24 |
---|---|
Properties (0) | 2020.12.05 |
servlet과 웹소켓 (0) | 2020.11.28 |
스트림 api (0) | 2020.11.22 |
파일 업로드 (0) | 2020.11.22 |