0

JAXB2 アノテーションを使用して次の xml コードをレンダリングしようとすると、いくつか問題が発生します。

....
<bizTransactionList>
    <bizTransaction type="urn:epcglobal:fmcg:btt:po">
        http://transaction.acme.com/po/54847
    </bizTransaction>
    <!--other entries -->
</bizTransactionList>
...

ドキュメントに従って、次のように問題を解決することができました:1)リストを所有するクラス内で、この方法でリストゲッターに注釈を付けます

@XmlElementWrapper(name="bizTransactionList")
@XmlElement(name="bizTransaction")
public List<BizTransaction> getBizTransactionList() {
    return bizTransactionList;
}

2) 次のように BizTransaction クラスを作成します。

public class BizTransaction {

    private URI transactionId;
    private URI type;

    @XmlValue
    public URI getTransactionId() {
        return transactionId;
    }

    public void setTransactionId(URI transactionId) {
        this.transactionId = transactionId;
    }

    @XmlAttribute
    public URI getType() {
        return type;
    }

    public void setType(URI type) {
        this.type = type;
    }

    public BizTransaction() {
        // TODO Auto-generated constructor stub
    }

    public BizTransaction(URI transactionId, URI type) {
        super();
        this.transactionId = transactionId;
        this.type = type;
    }

}

ここでの問題は、属性が正常に機能することですが、値 (つまり、transactionId 変数) は常に null です。問題を見つけるのを手伝ってもらえますか?

4

1 に答える 1

1

これは合理的なモデルですが、要素値の前後の空白bizTransactionは有効な URI ではないことを意味するため、XML の例は有効ではありません。あなたが言ったなら

    <bizTransaction type="urn:foo">http://transaction.acme.com/po/54847</bizTransaction>

その後、期待どおりに動作します。

于 2012-11-30T09:16:18.117 に答える