JAXB:将具有distinct属性的多个元素解组到同一java类中的单独字段中

时间:2011-10-19 19:53:53

标签: java jaxb unmarshalling

我正在使用一个返回以下响应的soap服务

<...>
    <SearchResult>
        <Score>1</Score>
        <HasImage>False</HasImage>
        <Field Name="BillToCode" Type="User"/>12</Field>
        <Field Name="BrokerNumber" Type="User"/>broker12</Field>
        <Field Name="DeductionDate" Type="User">2011-01-12</Field>
        <Field Name="DeductionNumber" Type="User">deduction</Field>
    </SearchResult>
<...>

我想把它映射成一个易于使用的java类。

@XmlRootElement(name="SearchResult")
@XmlAccessorType(XmlAccessType.FIELD)
public class SearchResultElement
{
    @XmlElement(name="Score")
    private  int mScore;

    @XmlElement(name="HasImage")
    private  boolean mHasImage;

    // ???
    private  String mBillToCode;

    // ???
    private String mBrokerNumber;

    // ???
    private String mDeductionDate;

    // ???
    private String mDeductionNumber;
}

我已经使用过JAXB,我需要了解如何避免造成混乱。

将Fields映射到hashmap也可能是有用的,但我想避免将Fields映射到数组中。

谢谢!

1 个答案:

答案 0 :(得分:1)

使用 MOXy ,您可以使用@XmlPath注释as described in this post

e.g。

@XmlPath("/SearchResult/Field[@Name='BillToCode']/text()");
private String mBillToCode

编辑: MOXy支持匹配一个属性,因此遗憾的是您无法编写@Name='BillToCode' and @Type='User'