2

動的構造の xml があります。例えば:

<aggregator>
    <aggregationType>Voting</aggregationType>
    <decimalPrecision>4</decimalPrecision>
    <seed>2</seed>
    <HTepsilon>0.0050</HTepsilon>
    <WLWmaxIterations>100</WLWmaxIterations>
    <WLWepsilon>0.0050</WLWepsilon>
</aggregator>

上記の xml では、aggregatorタグはさまざまな構造を持つことができます。これは、aggregationType によって異なります。

タグHTepsilon、 、WLWmaxIterationsおよびWLWepsilonの存在は に依存しますaggregationType

現時点では、これらのタグは常に xml で言及する必要がありますが、aggregationType タグに基づくエントリを持つようにこれを変更することを楽しみにしています。

その場合、このタグの Java クラスをどのように定義すればよいでしょうか。現在、aggregationType をすべての可能な値と比較し、対応するタグの値を取得しています。

この設計では、コードの 1 か所の小さなエラーが致命的となる可能性があります。

4

2 に答える 2

0

「タグ HTepsilon、WLWmaxIterations、および WLWepsilon の存在は、aggregationType によって異なります」とはどういう意味ですか。「依存関係」ポリシーを拡張できますか。データモデルを定義する XSD を定義することから始めることをお勧めします。JAXB は、XSD 定義から Java クラスを生成できます。

于 2013-06-12T10:27:00.080 に答える
0

ベースの Aggregator タイプを定義してから、必要な拡張機能を定義するのはどうですか。例えば:

<xsd:complexType name="Aggregator" abstract="true">
<xsd:sequence>
<xsd:element name="aggregationType" type="xsd:string">
</xsd:element>      
<xsd:element name="decimalPrecision" type="xsd:int">
</xsd:element>      
</xsd:sequence>
</xsd:complexType>

<xsd:complexType name="HTepsilonAggregator">
<xsd:complexContent>
<xsd:extension base="Aggregator">
<xsd:sequence>
<xsd:element name="HTepsilon" type="xsd:double"></xsd:element>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
于 2013-06-14T15:38:16.580 に答える