JAXB(Java™ Architecture for XML Binding) 런타임을 사용하여 XML 인스턴스 문서를 조작할 수 있습니다.
시작하기 전에
JAXB를 사용하여 스키마 컴파일러인
xjc 명령으로 XML 스키마에서 Java 클래스를 생성하거나
스키마 생성기인
schemagen 명령으로 Java
클래스에서 XML 스키마를 생성하십시오.
이 태스크 정보
JAXB API 및 도구를 사용하여 XML 스키마와
Java 클래스 간 맵핑을 설정하십시오. 데이터 바인딩이
이미 있는 경우 JAXB 바인딩 런타임 API를 사용하여 XML 인스턴스 문서를
Java 오브젝트로(부터) 변환하십시오. XML 문서에
저장된 데이터는 데이터 구조에 대한 이해 없이도 액세스할 수 있습니다. JAXB 어노테이션이 있는 클래스와 아티팩트에는
JAXB 런타임 API가 XML 인스턴스 문서를 처리하는 데 필요한 모든 정보가 들어 있습니다.
JAXB 런타임 API를 사용하면 JAXB 오브젝트를 XML로 마샬링(marshalling)하고 이 XML 문서를 다시 JAXB 클래스 인스턴스로 역마샬링(unmarshalling)할 수 있습니다.
프로시저
- JAXB 오브젝트를 XML 인스턴스 문서로 마샬링(marshalling)하십시오.
JAXB 런타임 API를 사용하여 JAXB 오브젝트 인스턴스를 XML 인스턴스 문서로 마샬링(marshalling)하거나 변환하십시오.
- JAXB 클래스를 인스턴스화하십시오.
- JAXB Marshaller를 호출하십시오.
이 예에서는 애플리케이션 내에서 생성된 JAXB 오브젝트를 인스턴스화하고
JAXBContext 클래스 및 JAXB 런타임 Marshaller API를 사용하여 JAXB 오브젝트를 XML 인스턴스로 마샬링(marshalling)하는 방법을 보여줍니다.
JAXBContext jc = JAXBContext.newInstance("myPackageName");
//Create marshaller
Marshaller m = jc.createMarshaller();
//Marshal object into file.
m.marshal(myJAXBObject, myOutputStream);
JAXB 참조 구현은
JAXB 스펙에서 정의되지 않은 네임스페이스 접두부 맵핑, 들여쓰기 및 문자 이스케이프 제어 등의
벤더 특정 Marshaller 특성을 추가로 도입합니다.
이러한 특성을 사용하여 마샬링(marshalling) 프로세스의 추가 제어를 지정하십시오. 이러한 특성은 JAXB 참조 구현에서만 작동하며
다른 JAXB 제공자에서는 작동하지 않을 수 있습니다. 벤더 특정 특성과 관련한 추가 정보는
JAXB(Java Architecture for XML Binding) RI 벤더 확장
런타임 특성 스펙에 있습니다.
- XML 파일을 JAXB 오브젝트로 역마샬링(unmarshalling)하십시오.
JAXB 런타임 API를 사용하여 XML 인스턴스 문서를 JAXB 오브젝트 인스턴스로 역마샬링(unmarshalling)하거나 변환하십시오.
- 기존 XML 인스턴스 문서를 얻으십시오.
- JAXB Unmarshaller를 호출하십시오.
이 예에서는 XML 문서를 읽고 XML 문서를 JAXB 오브젝트 인스턴스로 역마샬링(unmarshalling)하거나 변환하는 프로그램을 보여줍니다.
JAXBContext 클래스 및 JAXB 런타임 Unmarshaller API를 사용하여 XML 문서를 역마샬링(unmarshalling)하십시오.
JAXBContext jc = JAXBContext.newInstance("myPackageName");
//Create unmarshaller
Unmarshaller um = jc.createUnmarshaller();
//Unmarshal XML contents of the file myDoc.xml into your Java
object instance.
MyJAXBObject myJAXBObject = (MyJAXBObject)
um.unmarshal(new java.io.FileInputStream( "myDoc.xml" ));
결과
이제 JAXB Java 클래스를 마샬링(marshalling)하고
JAXB 바인딩 프레임워크를 사용하여 XML 데이터를 역마샬링(unmarshalling)할 수 있습니다. 마샬링(marshalling) 및 역마샬링(unmarshalling) 런타임 API에 대한 추가 정보는 JAXB 참조 구현 문서를 참조하십시오.
문제점 방지: Java 2
보안이 사용으로 설정된 경우 보안 예외를 방지하기 위해 AccessController.doPrivileged 메소드 내에서 JAXBContext.newInstance(), Unmarshaller.unmarshal() 및 Marshaller.marshal() 메소드 호출을 랩핑하십시오.
gotcha
.