1

apache-commons-digester 3 を使用して XML をオブジェクトにロードしようとしています。私が直面している問題は、一部のタグに興味のない属性があることです。しかし、<set-properties-rule>ルールを使用すると、すべての属性をオブジェクト プロパティにロードしようとし、一部の属性に一致するプロパティがないことが判明すると失敗します。 . これらの属性を除外するにはどうすればよいですか? 私は次のようなものを探しています<set-properties-rule exclude="/xmlns:xsi*"/>

4

2 に答える 2

1

あなたが探しているのは無視ルールだと思います。これはいくつかの 3.x バージョンで追加されたと思います。

<set-properties-rule>   
    <ignore attr-name="whatever" />
    <alias attr-name="surname" prop-name="lastname" />
</set-properties-rule>
于 2012-06-27T19:37:22.620 に答える
0

無視要素は、digester ライブラリに埋め込まれた DTD にないため、実行時に厄介な例外が発生します。別のアプローチは、次の例のように、プロパティ値を指定せずにエイリアスを使用することです。

<set-properties-rule>
    <alias attr-name="whatever" />
    <alias attr-name="surname" prop-name="lastname" />
</set-properties-rule>

上記の例では、属性「whatever」は無視されます。

SetPropertiesRule クラスのドキュメントには次のように書かれています。

プロパティ名が null の場合、または属性名に一致するプロパティ名がない場合、これは属性を無視する必要があることを示します。

この遅い回答で申し訳ありませんが、プロジェクトでこの問題が発生し、この解決策が見つかりました。私にとっては完璧に機能します(digester3-3.2で使用しています)。

于 2015-10-23T14:13:57.757 に答える