かなり複雑な XML スキーマ (HR-XML) を扱っており、xpath ベースのマッピング アプローチを使用して、ローカルに定義されたドメイン オブジェクトに非整列化することを望んでいます。Simple を試しましたが、問題が発生しました。最近 MOXy を試してみましたが、運が良かったのですが、述語のサポートで問題が発生しました。MOXy が使用する必要があると思われる述語をサポートしているかどうかを確認しようとしています。私がする必要があるのは、兄弟要素の値に基づいて 1 つの要素の値を取得することです。
これが実行されると、正しく選択されていないように null が返されます。誰かが同様のことをしましたか?多分別の問題がありますか?
XML の例:
<person>
<communication>
<address>
<street>101 First St.</street>
<city>Whoville</city>
<state>CA</state>
</address>
</communication>
<communication>
<channelcode>email</channelcode>
<uri>johndoe@some.com</uri>
</communication>
<communication>
<channelcode>telephone</channelcode>
<usecode>mobile</usecode>
<dialnumber>555-555-5555</dialnumber>
</communication>
</person>
オブジェクトの例:
public class Person
{
private String email;
private Address homeAddress;
private String homePhone;
...
xml-bindings.xml フラグメントの例:
<java-types>
<java-type name="Person">
<xml-root-element name="person">
<java-attributes>
<xml-element java-attribute="email" xml-path="communication/uri[../channelcode/text()='email']/text()" />
<xml-element java-attribute="homePhone" xml-path="communication[channelcode/text()='telephone']/dialnumber/text()" />
<xml-element java-attribute="homeAddress" xml-path="communication/Address" />
</java-attributes>
</java-type>
...