2014-09-07 3 views
1

JAXB API를 사용하여 Java 객체를 XML에 매핑합니다. 내 자바 클래스는JAXB API 내의 XML 요소에 속성 추가

@XmlRootElement(name = "ad") 
@XmlAccessorType(XmlAccessType.FIELD) 
class Item { 

    @XmlElement(name = "id", nillable = false) 
    @XmlCDATA 
    private int id; 

    @XmlElement(name = "url", nillable = false) 
    @XmlCDATA 
    private String url; 


    public Item() { 

    } 

    public int getId() { 
     return id; 
    } 

    public void setId(int id) { 
     this.id = id; 
    } 

    public String getUrl() { 
     return url; 
    } 

    public void setUrl(String url) { 
     this.url = url; 
    } 
} 

출력은 다음과 같이이다 :

내가 예를 들어, 요소를 URL에 속성을 추가 할 필요가
<ad> 
    <id><![CDATA[ 104 ]]></id> 
    <url><![CDATA[www.google.com]]></url> 
</ad> 

: 내가 사용하는 많은 combinaisons을 시도

<ad> 
     <id><![CDATA[ 104 ]]></id> 
     <url type="fr"><![CDATA[www.google.fr]]></url> 
    </ad> 

@ XmlValue 및 @XmlAttribute ...

답변

1

url 변수는 String이 아니어야하며 자체 유형이어야합니다. URL 항목에 대해 별도의 클래스 인 URL을 만들고 @XmlAttribute 주석이있는 String 필드에 입력해야합니다. 예를 들어

, 나는 내가 사용하거나 @XmlCDATA 주석을 테스트 할 수 없습니다 MOXY이없는

@XmlRootElement(name = "ad") 
@XmlAccessorType(XmlAccessType.FIELD) 
class Item { 
    @XmlElement(name = "id") 
    private int id; 
    @XmlElement(name = "url") 
    private Url url; 

    public Item() { 
    } 

    public int getId() { 
     return id; 
    } 

    public void setId(int id) { 
     this.id = id; 
    } 

    // @XmlAttribute 
    public Url getUrl() { 
     return url; 
    } 

    public void setUrl(Url url) { 
     this.url = url; 
    } 
} 

@XmlRootElement(name = "url") 
@XmlAccessorType(XmlAccessType.FIELD) 
class Url { 
    @XmlValue 
    private String value; 
    @XmlAttribute(name = "type") 
    private String type; 

    public String getValue() { 
     return value; 
    } 

    public void setValue(String value) { 
     this.value = value; 
    } 

    public String getType() { 
     return type; 
    } 

    public void setType(String type) { 
     this.type = type; 
    } 
} 

참고.

+0

감사합니다. :) – user973296