EclipseLink MOXy JAXB実装を使用して、@ XmlPathアノテーションを使用して、要素の属性の値に基づいて要素値を取得しようとしています。私はそれを機能させることができないようです。これはサポートされていますか?
XMLの抜粋:
<Item>
...
<ItemRefFields>
<ItemRefField id="1">12345</ItemRefField>
<ItemRefField id="2">blah</ItemRefField>
</ItemRefFields>
</Item>
POJOの抜粋:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name="Item")
public class Item
{
...
@XmlPath("ItemRefFields/ItemRefField[@id='1']/text()")
private String ItemRef1 = null;
@XmlPath("ItemRefFields/ItemRefField[@id='2']/text()")
private String ItemRef2 = null;
...
}
現在、両方の値が連続してItemRef2に割り当てられ、「blah」が最終的な値になりますが、ItemRef1に値が割り当てられることはありません。これは、XPath式の属性値の部分([@ id ='x'])が無視されているためだと思います。したがって、両方のXPath式は同じものとして扱われ、これにより、式が最初にItemRef1にマップされ、次にItemRef2にマップされ、ItemRef2がItemRef1マッピングを上書きするため、ItemRef2が優先されます。
これが私の側の構文上の問題によって引き起こされていることを願っています。何かアドバイスをいただければ幸いです。
ありがとう、ケビン