2012-04-28 8 views
1

を追加:XmlElementWrapperと奇妙な値が、私はこのBeanを持っている私のコードでは

@XmlRootElement 
@XmlAccessorType(XmlAccessType.NONE) 
public class Data implements Serializable { 

@XmlAttribute 
private String _name; 

@XmlElementWrapper(name = "statuses") 
@XmlElement(name="status") 
    private List<Boolean> _statuses; 

public String getName() { 
    return _name; 
} 

public void setName(String name) { 
    _name = name; 
} 

    public List<Boolean> getStatuses() { 
     return _statuses; 
    } 

    public void setStatuses(List<Boolean> statuses) { 
     _statuses = statuses; 
    } 

.... 

} 

これは、Beanをマーシャリングするためのコードです:私は何を期待

Writer w = null; 
    try { 
     final JAXBContext context = JAXBContext.newInstance(Data.class); 
     final Marshaller m = context.createMarshaller(); 
     m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); 
     w = new FileWriter("file.xml"); 
     m.marshal(obj, w); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } finally { 
     try { w.close();} 
     catch (Exception e) {} 
    } 

は次のとおりです。

<data name="data-test"> 
<statuses> 
    <status>true</status> 
    <status>true</status> 
    <status>true</status> 
    <status>true</status> 
    <status>true</status> 
    <status>true</status> 
    <status>true</status> 
    <status>true</status> 
    <status>true</status> 
    <status>true</status> 
    <status>true</status> 
    <status>true</status> 
</statuses> 
... 
</data> 

私は得た:

<data name="data-test"> 
<statuses> 
    <status>true</status> 
    <status>true</status> 
    <status>true</status> 
    <status>true</status> 
    <status>true</status> 
    <status>true</status> 
    <status>true</status> 
    <status>true</status> 
    <status>true</status> 
    <status>true</status> 
    <status>true</status> 
    <status>true</status> 
</statuses> 

// strange repetition 
<statuses>true</statuses> 
<statuses>true</statuses> 
<statuses>true</statuses> 
<statuses>true</statuses> 
<statuses>true</statuses> 
<statuses>true</statuses> 
<statuses>true</statuses> 
<statuses>true</statuses> 
<statuses>true</statuses> 
<statuses>true</statuses> 
<statuses>true</statuses> 
<statuses>true</statuses> 

// attribute as separated element 
<name>data-test</name> 
... 
</data> 

どのように私は繰り返しその奇妙なものを避けることができますか?

答えて

0

私の推測では、アクセスタイプが動作していないということです。あなたはXmlAccessType.FIELDを試しましたか?また、あなたが正しくあなたのクラスをコンパイルし、クラスパスが正しく設定されているていることを確認してください(多分あなたは以前のテストから転がっ古いクラスを持っています?)。

UPDATE:

あなたはゲッター/セッターに@XmlTransientを追加し、明示的に試すことができますか? 。

+0

はいJDKのためにJAXBに建てられたが、私はまったく同じ結果:( – Randomize

+0

@Randomizeを得るにはバグのように見えますが - 別の提案を追加しました – jtahlborn

+0

私がゲット/セットに過渡を追加:COM .sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException:IllegalAnnotationExceptionsの4つのカウント... – Randomize

関連する問題