JAXB注释 - 马歇尔列表<string []> </string []>

时间:2013-02-17 14:04:03

标签: java xml java-ee jaxb marshalling

我有这个简单的对象:

@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class SimilarityInfoResult {

    private String name;

    private List<String[]> parameters;

    public SimilarityInfoResult() {
    }

    public SimilarityInfoResult(String name, List<String[]> parameters) {
        this.name = name;
        this.parameters = parameters;
    }

...

}

它被映射为:

   <similarityInfoResult>
        <name>SubstructureSimilarity</name>
        <parameters>
            <item>treshold</item>
            <item>Double</item>
        </parameters>
        <parameters>
            <item>numberOfResults</item>
            <item>Integer</item>
        </parameters>
    </similarityInfoResult>

期望的输出:

<similarityInfoResult>
    <name>SubstructureSimilarity</name>
    <parameters>
        <parameter>
            <name>treshold</name>
            <type>Double</type>
        </parameter>
        <parameter>
            <name>results</name>
            <type>Integer</type>
        </parameter>
    </parameters>
</similarityInfoResult>

我应该如何使用注释?可能吗?也许我必须制作特殊的参数对象和List<Parameter>?谢谢

1 个答案:

答案 0 :(得分:5)

您需要添加Parameter课程以容纳nametype。 并将List<String[]>更改为List<Parameter>

通过这种方式,您可以更轻松地控制参数对象的XML解析。

并使用:

@XmlElementWrapper(name="parameters")
@XmlElement(name="parameter")
private List<Parameter> parameters;

public class Parameter{

    private String name;
    private String type;
...

}