0

私は単純なバインディングを持っています:

<binding>
    <mapping name="entry" class="google.vo.GoogleContactsEntry" ordered="false">
        <value name="title" field="title" usage="optional" />
        <value name="email" field="email" usage="optional" />   
    </mapping>


    <mapping name="feed" class="google.vo.GoogleContacts" ordered="false" flexible="true">
        <namespace uri="http://www.w3.org/2005/Atom" default="elements"/>
        <value name="id" field="id" usage="optional" />
        <value name="updated" field="updatedString" usage="optional" />
        <value name="title" field="title" usage="optional" />
        <collection item-type="google.vo.GoogleContactsEntry" name="entries" field="entries"/>
    </mapping>
</binding>

問題は、 name="entries"を必要 とするCollection要素にあります。Googleは、折り返し要素なしでエントリを返します。ちょうどこのような:

<feed>

    <entry>

    </entry>

    <entry>

    </entry>

</feed>

そして、JiBXは次のことを期待しています。

<feed>
    <entries>
        <entry>

        </entry>

        <entry>

        </entry>
    <entries>       
</feed>

コレクションのバインディングスキームに要素名がないと、JiBXはコンパイルされません。解決策はありますか?

4

2 に答える 2

3

より良い解決策は、xsl変換を使用し、着信応答をjibxによって期待されるものに変更することです。これは単純なはずです。

このトピックは役に立ちます: XSLTを使用して隣接する要素のグループをラップするにはどうすればよいですか?

于 2012-11-16T16:37:21.220 に答える
1

悪名高い回避策:

resp = StringUtils.replaceOnce(resp, "<entry>", "<entries><entry>");
resp = StringUtils.replaceOnce(resp, "</feed>", "</entries></feed>");
于 2012-09-17T11:24:41.867 に答える