2013-09-03 3 views
1

모든 필드에서 네임 스페이스를 넣어야하기 때문에 jabx에 한 번만 네임 스페이스를 입력하는 방법을 알고 싶습니다.Jaxb 필드에서 네임 스페이스 제거하기

아래 코드는 그것을 보여줍니다.

@XmlRootElement(name = "nfeProc", namespace = "http://www.portalfiscal.inf.br/nfe") 
@XmlAccessorType(XmlAccessType.FIELD) 
class NFeProc { 

    @XmlElement(name = "NFe", namespace = "http://www.portalfiscal.inf.br/nfe") 
    private NFe nfe; 

    @XmlAttribute(name = "versao") 
    private String versao; 

    public NFe getNfe() { 
     return nfe; 
    } 

    public void setNfe(NFe nfe) { 
     this.nfe = nfe; 
    } 

    public String getVersao() { 
     return versao; 
    } 

    public void setVersao(String versao) { 
     this.versao = versao; 
    } 

} 

한 번만 입력하고 싶습니다.

감사

답변

1

당신은 @XmlSchema 주석을 사용하여 패키지 수준에서 설정할 수 있습니다. 요소 양식 기본값을 정규화하도록 설정하면 주석을 통해 지정된 네임 스페이스가없는 모든 요소가 지정된 네임 스페이스에 속하게됩니다. 추가 정보

package-info.java

@XmlSchema(
    namespace = "http://www.portalfiscal.inf.br/nfe", 
    elementFormDefault = XmlNsForm.QUALIFIED) 
package example; 

import javax.xml.bind.annotation.XmlNsForm; 
import javax.xml.bind.annotation.XmlSchema; 

+0

내가이 주석을 참조하지는 ...에서 네이티브 오기 ' 자바? 블로그에서이 솔루션을 찾았습니다. 매우 좋습니다 ... ns0, ns1에 대해 알고 싶습니다. 여기 사용할 필요가 없습니까? –

+0

@Here는'@XmlSchema' in이 Java SE 6 이후 JDK/JRE에 포함되어 있습니다. 네임 스페이스가'@XmlSchema'에 지정되면 JAXB 구현은 일반적으로 기본 네임 스페이스를 활용합니다. 접두사를 제어하는 ​​데 관심이 있다면 다음 내용이 도움이 될 것입니다. http://blog.bdoughan.com/2011/11/jaxb-and-namespace-prefixes.html –

+1

Eclipse에서 하나의 패키지를 만들고 create package-info.java, 아래에 표시된 코드를 넣고 네임 스페이스를 사용하는 모든 참조를 제거하고 코드를 잘 실행하십시오. thanks –

관련 문제