2

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が優先されます。

これが私の側の構文上の問題によって引き起こされていることを願っています。何かアドバイスをいただければ幸いです。

ありがとう、ケビン

4

1 に答える 1

1

私はEclipseLink JAXB (MOXy)を率いています。この機能は、今後の EclipseLink 2.3 リリースの一部です。EclipseLink 2.3.0 ナイトリー ダウンロード (3 月 22 日開始) の 1 つを以下からダウンロードして、今すぐ試すことができます。

マッピングは、質問で説明したとおりになります。

@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;
  ...
}

詳細については

于 2011-03-17T15:03:56.997 に答える