バイアスの宣言-私はEclipseLinkJAXB(MOXy)のリーダーです
EclipseLink JAXB(MOXy)を使用すると、必要なフォーマットを取得できる場合があります。これにより、メモリフットプリントを削減するためにJDOM部分を排除できます。
例
モデルに次のクラスがあると仮定します(スペースを節約するためにアクセサーは省略されています)。
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Customer {
private Address billingAddress;
private Address shippingAddress;
}
JAXBマッピング
EclipseLink MOXyはJAXB仕様(JSR-222 )に準拠しているため、デフォルトで次のドキュメントが生成されます。
<customer>
<billingAddress/>
<shippingAddress/>
</customer>
パスマッピング
XMLをきめ細かく制御する必要がある場合は、MOXyの@XmlPath拡張機能を使用できます。次のようにフィールドに注釈を付けます。
@XmlPath("contact-info/billing-address")
private Address billingAddress;
@XmlPath("contact-info/shipping-address")
private Address shippingAddress;
次のXMLが生成されます。
<customer>
<contact-info>
<billing-address/>
<shipping-address/>
</contact-info>
</customer>
位置マッピング
XPathフラグメントには、位置インジケーターを含めることができます。
@XmlPath("address[1]")
private Address billingAddress;
@XmlPath("address[2]")
private Address shippingAddress;
結果のXMLは次のようになります。
<customer>
<address/>
<address/>
</customer>
条件付きマッピング
@XmlPath("address[@type='billing']")
private Address billingAddress;
@XmlPath("address[@type='shipping']")
private Address shippingAddress;
結果のXMLは次のようになります。
<customer>
<address type="billing"/>
<address type="shipping"/>
</customer>
詳細については