2012-06-14 2 views
1

내가 만든 xsd에서 생성 된 jaxb 개체가 있습니다. 나는이 내용을 정렬 화시 이전 XML 출력은 다음과 같이 보았다 : 나는 맥에 윈도우 머신에 코딩부터 변경 최근 한jaxb 마샬링 xmlns 특성을 xml 출력에 누락 사용

<report xmlns="urn:com-test-person-data:v3"> 
<person-data> 
    .......(Data) 
</person-data> 
</report> 

. 내가 사용하고있는 jaxb 객체에서 아무 것도 변하지 않았습니다. 하지만 지금은 마샬링 결과물이 이렇게 보입니다.

<report> 
<person-data> 
    .......(Data) 
</person-data> 
</report> 

xmlns 속성을 제거 할 수있는 항목을 확인하기 위해 일부 파기를 시도했지만 운이 없었습니다. 이 속성을 사용하여 사용중인 스키마의 버전을 확인하므로 출력 된 XML 조각에 중요합니다.

final JAXBContext context = JAXBContext.newInstance(Report.class); 
final Marshaller marshaller = context.createMarshaller(); 
marshaller.setProperty(Marshaller.JAXB_ENCODING, "UTF-8"); //$NON-NLS-1$ 
marshaller.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.TRUE); 
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); 
marshaller.marshal(reportJaxBObject, sw); 

모든 아이디어 : 나는 마샬를 호출 할 경우

다음은 코드입니까?

+0

마샬링 할 대상이되는 'sw'개체는 무엇입니까? –

+0

죄송합니다. 게시해야합니다. 이것은 java.io.StringWriter의 인스턴스입니다. – vogelj

답변

0

이 문제는 대개 package-info.java이 나머지 모델 클래스와 함께 컴파일되거나 패키지되지 않은 결과입니다. package-info 클래스는 네임 스페이스 정보를 포함하는 @XmlSchema이 지정된 곳입니다.

+0

내가 소비하는 jarb 클래스에는 패키지 정보 클래스가 있습니다. 몇 번이나 컴포넌트를 다시 빌드 해 보았습니다. 소비자가 패키지를 가져 오면 참조 라이브러리의 jar 파일 아래에 package-info.class가 표시됩니다. 그럼에도 불구하고 내 xml 출력에는 여전히 특성이 없습니다. 나는이 모든 일에 상당히 새로운 것이므로 내가 놓칠지도 모르는 뭔가가 있을까요? – vogelj

+0

@vogelj -'package-info' 클래스가'Report'와 같은 패키지에 있습니까? 또한'JAXB_FRAGMENT' 속성을 설정 한 행에 주석을 달면 같은 동작을 보입니까? –

+0

예,'package-info'는'Report'와 같은 패키지에 있습니다. 그리고'JAXB_FRAGMENT' 속성을 제거하면 위의 동작이 동일합니다. 물론 XML 태그를 출력하는 것을 제외하고. 나는 항상 그것을 단편으로 출력했기 때문에 그것이 어딘지에서 완전히 벗어난 것입니다. – vogelj

관련 문제