2011-08-04 3 views
2

wsimport에서 생성 된 JAXB 데이터 클래스가 있으며이를 콘솔 및/또는 로그에 인쇄하고 싶습니다. 불행히도 toString은 생성되지 않습니다.JAXB 생성 빈 인쇄

데이터 객체를 인쇄하는 가장 쉬운 방법은 무엇입니까? 읽을 수있는 한 출 력이 원본 XML이든 다른 것이 든 상관 없습니다.

클래스가 유효한 빈 (getters 및 setters라고 올바르게 명명 된 것) 인 것처럼 보이므로 빈을 사용하는 모든 것이 유효 할 수도 있습니다.

콘솔로 인쇄를 들어

답변

3

,이 시도 :

jaxbContext.createMarshaller().marshal(jaxbObject, System.out); 

String로를 얻으려면 사용하십시오 StringWriter :

StringWriter writer = new StringWriter(); 
jaxbContext.createMarshaller().marshal(jaxbObject, writer); 
String xmlString = writer.toString(); 

있다 JAXBContext를 얻으려면 다음을 수행해야 할 객체 :

JAXBContext jaxbContext = JAXBContext.newInstance(<WhateverClass>.class); 

여기서 <WhateverClass>은 th e 유형은 jaxbObject입니다. 또한 할 수 있어야합니다 :

JAXBContext jaxbContext = JAXBContext.newInstance(jaxbObject.getClass()); 

컨텍스트 및 스타일 선호를 정의하는 위치에 따라 다릅니다. JAXBContext은 스레드로부터 안전하기 때문에 하나의 인스턴스를 정의하고 공유하는 것이 좋습니다. MarshallerUnmarshaller은 그러한 보증을하지 않습니다. 따라서 그들은 필요에 따라 만들어야합니다.

+0

어디에서'jaxbContext'를 얻을 수 있습니까? –

+0

@Bart이 객체를 찾을 수있는 패키지 이름 목록을 전달하여 [JAXBContext] 인스턴스를 가져와야합니다. (http://download.oracle.com/javase/6/docs/api/javax/xml /bind/JAXBContext.html). – asgs

+0

@asgs - 클래스 나 패키지 이름 (패키지에'jaxb.index' 파일 또는'ObjectFactory'가 포함되어있는 곳)을 전달하여 새로운'JAXBContext'를 생성 할 수 있습니다. –