2014-07-09 2 views
1

JAXB에서 서브 루틴을 처리하는 방법에 대해 혼란스러워합니다. 나는 루트 클래스는 다음과 같습니다 알고 :JAXB 서브 루트 요소

package cool.java 

@XmlRootElement 
public class Snap { 

    @XmlElement 
    private Crackle foo; 
    .... 
} 

그리고 스냅의 서브 클래스는 다음과 같이 보일 것이다 : 나는 혼란스러워지고 있어요

package cool.java 

@XmlRootElement(namespace = "cool.java.Snap") 
public class Crackle { 

    @XmlElement 
    private Pop foo; 
    ... 
} 

과 같이 딱딱이있는 팝 클래스에 주석을 어떻게 그것의 즉각적인 뿌리. 나는 아직도 그것을 주 루트로 다시 가리킬 것입니까?

@XmlRootElement(namespace = "cool.java.Snap") 

팝의 즉석 루트를 지정합니까?

@XmlRootElement(namespace = "cool.java.Snap.Crackle") 
+0

, 그냥 (BTW'Snap'하지만 요소의 서브 클래스가 아닌) Crackle''에서'Pop'를 참조합니다. – Thomas

+0

스키마에 따라 @XmlElement (필수 = true) 또는 @XmlElement로 충분할 것을 지정할 필요가 없습니다. –

답변

0

Crackle 클래스에는 특수 효과가 필요하지 않습니다. Crackle 인스턴스의 내용은 인스턴스를 보유하는 필드/속성 (예 : foo)에 해당하는 요소로 중첩됩니다. 당신이 (`@ XmlType` 제외) 특별한 주석이 필요하지 않을 AFAIK

<snap> 
    <foo> 
     <foo>...</foo> 
    </foo> 
</snap>