JAXB 초보 이해
먼저 예 를 봅 시다.
Customer.java
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class Customer {
String name;
int age;
int id;
@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;
}
@XmlAttribute
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@Override
public String toString()
{
return "Customer[" + getName() + "," + getId() + "," + getAge() + "]";
}
}
import java.io.File;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Unmarshaller;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
public class JAXBExample {
public static void main(String[] args) {
Customer customer = new Customer();
customer.setId(100);
customer.setName("mkyong");
customer.setAge(29);
try {
File file = new File("C:\\file.xml");
JAXBContext jaxbContext = JAXBContext.newInstance(Customer.class);
//JAVA to XML
Marshaller jaxbMarshaller = jaxbContext.createMarshaller();
//
jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
jaxbMarshaller.marshal(customer, file);
jaxbMarshaller.marshal(customer, System.out); //
//XML TO JAVA
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
Customer mycustomer = (Customer) jaxbUnmarshaller.unmarshal(file);
System.out.println(mycustomer);
} catch (JAXBException e) {
e.printStackTrace();
}
}
}
콘 솔 출력 은 다음 과 같 습 니 다.
Customer[mkyong,100,29]
설명:
@XmlRootElement 자바 클래스 를 XML 의 루트 노드 인자 로 표시 합 니 다:name 이 루트 노드 의 이름 을 정의 합 니 다. namespace 이 루트 노드 이름 공간 정의
@XmlAccessorType 이 클래스 의 어떤 종 류 를 XML 에 매 핑 해 야 하 는 지 정의 합 니 다.네 개의 인 자 를 받 을 수 있 습 니 다.각각: XmlAccessType.FIELD:이 클래스 의 모든 필드 를 XML 에 매 핑 합 니 다. XmlAccessType.PROPERTY:이 클래스 의 속성(get/set 방법)을 XML 에 매 핑 합 니 다. XmlAccessType.PUBLIC_MEMBER:이 클래스 의 모든 Public field 나 property 를 XML 에 동시에 표시 합 니 다(기본 값) XmlAccessType.NONE:@XmlElement 를 매 핑 하지 않 습 니 다. XML 노드 에 필드 나 get/set 방법 을 지정 합 니 다.예 를 들 어 하나의 XmlAccessor Type 이 PROPERTY 로 표 시 될 때 get/set 방법 이 없 는 필드 에 이 주 해 를 표시 하면 이 필드 를 XML 에 표시 할 수 있 습 니 다.인자:defaultValue 지정 노드 기본 값 name 노드 이름 지정 namespace 노드 네 임 스페이스 지정 required 필요 한 지 여부(기본 값 false) nillable 이 필드 에 nillable="true"속성 이 포함 되 어 있 는 지 여부(기본 값 은 false) type 이 필드 나 속성의 관련 유형 을 정의 합 니 다@XmlAttribute XML 에 비 치 는 필드 나 get/set 방법 을 지정 합 니 다.인자:name 속성 이름 지정 namespace 속성 네 임 스페이스 지정 required 필요 한 지 여부(기본 값 false)@XmlTransient 어떤 필드 나 속성 을 XML 로 매 핑 할 필요 가 없습니다.예 를 들 어 하나의 XmlAccessor Type 이 PROPERTY 로 표 시 될 때 특정한 get/set 방법의 필드 에 이 주 해 를 표시 하면 이 속성 은 매 핑 되 지 않 습 니 다.@XmlType 맵 에 대한 규칙 적 인 매개 변 수 를 정의 합 니 다:proporer XML 을 매 핑 할 노드 순 서 를 지정 합 니 다. factoryClass UnMarshal 을 지정 할 때 맵 클래스 인 스 턴 스 를 만 드 는 데 필요 한 공장 클래스 입 니 다.기본 값 은 이 클래스 자체 입 니 다. factoryMethod 공장 류 의 공장 방법 을 지정 하 다. name XML Schema 의 type 이름 정의 namespace Schema 의 네 임 스페이스@XmlElement Wrapper 지정 배열 요소 나 집합 요 소 를 위 한 부모 노드 를 정의 합 니 다.예 를 들 어 클래스 에 List items 라 는 요소 가 있 습 니 다.이 주 해 를 추가 하지 않 으 면 이 요 소 는 매 핑 됩 니 다.
테스트:
위의 코드 를 약간 변경 합 니 다.다음 과 같 습 니 다.
@XmlElement(name = "myname")
public String getName() {
return name;
}
@XmlAttribute(name = "theID")
public int getId() {
return id;
}
결과 출력:
Customer[mkyong,100,29]
속성 과 노드 의 탭 이름 이 바 뀐 것 을 발 견 했 습 니 다.
요약:
주 해 는 구성원 변수 성명 위 에 놓 을 수도 있 고 set/get 함수 위 에 놓 을 수도 있 습 니 다.별명 을 지정 하려 면 변수 성명 위 에 놓 지 마 십시오.잘못 보 고 됩 니 다.
참고:jaxb 주해
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Ngnix 빠 른 입문기능 에 있어 Nginx 는 우수한 웹 서비스 소프트웨어 일 뿐만 아니 라 , 역방향 대리 와 부하 균형 에 있어 유명한 LVS Haproxy 등 전문 대리 소프트웨어 도 가지 고 있 지만 Nginx 의 배 치 는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.