티스토리 뷰

반응형

 

* JAXB : 자바의 XML을 파싱할 수 있게 도와주는 라이브러리로, 기존의 XML 분석 방법이 XML 전체를 String 형식으로 받아와서 문자열을 자르는 방식이었다면 JAXB는 원하는 태그명, 어트리뷰트명을 기입한 클래스를 마련해두기만 하면 자동적으로 값이 클래스에 들어오게 해주는 자동화 라이브러리다.

 

 

 

우선 아래와 같은 XML 객체가 있다.

@XmlRootElement(name = "packet")
public class GetRequest {

	private Webspace webspace;

	public Webspace getWebspace() {
		return webspace;
	}

	public void setWebspace(Webspace webspace) {
		this.webspace = webspace;
	}

	@XmlRootElement(name = "webspace")
	@XmlAccessorType(XmlAccessType.FIELD)
	public static class Webspace {

		@XmlElement(name = "get")
		private Get get;

		public Get getGet() {
			return get;
		}

		public void setGet(Get get) {
			this.get = get;
		}

		@XmlRootElement(name = "get")
		@XmlAccessorType(XmlAccessType.FIELD)
		public static class Get {

			@XmlElement(name = "filter")
			private Filter filter;

			public Filter getFilter() {
				return filter;
			}

			public void setFilter(Filter filter) {
				this.filter = filter;
			}

			@XmlRootElement(name = "filter")
			@XmlAccessorType(XmlAccessType.FIELD)
			public static class Filter {

				@XmlElement(name = "name")
				private String name;

				public String getName() {
					return name;
				}

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

			}
		}

	}

	public GetRequest() {
	}

	public GetRequest(String domain) {
		this.webspace = new Webspace();
		this.webspace.get = new Webspace.Get();
		this.webspace.get.filter = new Webspace.Get.Filter();

		this.webspace.get.filter.name = domain;
	}
}

 

이 객체가 XML로 잘 구성됐는지 알기 위해서 JAXB 라이브러리를 사용할 예정이다.

 

우선 JAXB에는 두 가지 기능이 있다.

  • 마샬 (Marshal) : 객체를 XML로 변환
  • 언마샬 (Unmarshal) : XML을 객체로 변환

 

여기서 마샬을 이용해 XML이 잘 구성되었는데 확인할 수 있다.

GetRequest model = new GetRequest("google.com");

JAXBContext context = JAXBContext.newInstance(GetRequest.class);
Marshaller mar= context.createMarshaller();
mar.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
mar.marshal(model, System.out);

 

 

 

위 코드를 실행하면 아래와 같이 찍히는 걸 볼 수 있다.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<packet>
    <webspace>
        <get>
            <filter>
                <name>google.com</name>
            </filter>
        </get>
    </webspace>
</packet>

(참고 : https://itstart-190126.tistory.com/m/125)

 

 

 

 

 

반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함