자바 대상 과 XML 파일 간 의 변환

Unmarshaller 클래스 는 클 라 이언 트 응용 프로그램 이 XML 데 이 터 를 자바 콘 텐 츠 대상 트 리 로 변환 할 수 있 도록 합 니 다.
Marshaller 클래스 는 클 라 이언 트 응용 프로그램 이 자바 콘 텐 츠 트 리 를 XML 데이터 로 변환 할 수 있 도록 합 니 다.
package hb.jaxb;

public class Classroom {
	private int id;
	private String name;
	private int grade;

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getGrade() {
		return grade;
	}

	public void setGrade(int grade) {
		this.grade = grade;
	}

	public Classroom(int id, String name, int grade) {
		super();
		this.id = id;
		this.name = name;
		this.grade = grade;
	}

	public Classroom() {
		super();
	}

}
package hb.jaxb;

import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement
public class Student {
	private int id;
	private String name;
	private int age;
	private Classroom classroom;

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public Classroom getClassroom() {
		return classroom;
	}

	public void setClassroom(Classroom classroom) {
		this.classroom = classroom;
	}

	public Student(int id, String name, int age, Classroom classroom) {
		super();
		this.id = id;
		this.name = name;
		this.age = age;
		this.classroom = classroom;
	}

	//无参够着函数一定需要,否则JXBContext无法正常解析。
	public Student() {
		super();
	}
}

주의:
1. 전환 이 필요 한 model 대상 은 반드시 @ XmlRootElement 주 해 를 추가 하고 그 안의 다른 대상 은 필요 하지 않 습 니 다.
2. 전환 이 필요 한 model 대상 은 매개 변수 가 없 는 구조 방법 이 있어 야 합 니 다. 이 대상 에서 인용 한 대상 을 포함 합 니 다.
3. 그 중에서 @ XmlRootElement (name = "Root") 는 xml 의 루트 요 소 를 표시 합 니 다. (name = "Root") 이것 은 xml 파일 과 요 소 를 다시 정의 합 니 다. 이 name 정의 가 없 으 면 xml 루트 요 소 는 기본적으로 대상 이름과 일치 합 니 다.
package hb.jaxb;

import java.io.StringReader;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
import org.junit.Test;

public class TestJaxb {

	@Test
	public void beanToXML() {
		Classroom classroom = new Classroom(1, "软件工程", 4);
		Student student = new Student(101, "张三", 22, classroom);

		try {
			JAXBContext context = JAXBContext.newInstance(Student.class);
			Marshaller marshaller = context.createMarshaller();
			marshaller.marshal(student, System.out);
		} catch (JAXBException e) {
			e.printStackTrace();
		}

	}
	
	@Test
	public void XMLStringToBean(){
		String xmlStr = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><student><age>22</age><classroom><grade>4</grade><id>1</id><name>软件工程</name></classroom><id>101</id><name>张三</name></student>";
		try {
			JAXBContext context = JAXBContext.newInstance(Student.class);
			Unmarshaller unmarshaller = context.createUnmarshaller();
			Student student = (Student)unmarshaller.unmarshal(new StringReader(xmlStr));
			System.out.println(student.getAge());
			System.out.println(student.getClassroom().getName());
		} catch (JAXBException e) {
			e.printStackTrace();
		}
		
	}
}

JAXB(Java Architecture for XML Binding) 는 업계 의 표준 으로 XML Schema 에 따라 Java 클래스 를 생 성 할 수 있 는 기술 이다. 이 과정 에서 JAXB 는 XML 인 스 턴 스 문 서 를 자바 대상 트 리 로 거꾸로 생 성 하 는 방법 을 제공 하고 자바 대상 트 리 의 내용 을 XML 인 스 턴 스 문서 에 다시 쓸 수 있다. 다른 한편, JAXB 는 XML 모드 를 빠 르 고 간편 하 게 연결 하 는 방법 을 제공한다.자바 에 표시 하여 자바 개발 자가 자바 응용 프로그램 에서 XML 데이터 와 처리 함 수 를 편리 하 게 결합 할 수 있 도록 합 니 다.
 
    JAXBCContext 클래스 는 JAXB API 의 클 라 이언 트 입구 점 을 제공 합 니 다. JAXB 바 인 딩 프레임 워 크 작업 을 실현 하 는 데 필요 한 XML/자바 바 인 딩 정 보 를 관리 하 는 추상 적 인 작업 을 제공 합 니 다. 이 작업 들 은 해체, 편성, 검증 을 포함 합 니 다.

좋은 웹페이지 즐겨찾기