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标签可以有不同的结构。它取决于聚合类型。

标签HTepsilonWLWmaxIterationsWLWepsilon存在取决于aggregationType.

到目前为止,这些标签需要始终在 xml 中提及,但我期待以这样的方式更改它,使它们具有基于 aggregationType 标签的条目。

在那种情况下,我应该如何为这个标签定义我的 Java 类。到目前为止,我正在将 aggregationType 与所有可能的值进行比较,并检索相应的标签值。

一个地方的代码中的一个小错误在这个设计中可能是致命的。

4

2 回答 2

0

如何定义一个基本的聚合器类型,然后定义必要的扩展。例如:

<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 回答
0

“标签 HTepsilon、WLWmaxIterations 和 WLWepsilon,存在取决于聚合类型”是什么意思。您能否扩展“依赖”政策。我建议您从定义 XSD 开始,在其中定义您的数据模型。JAXB 可以根据 XSD 定义为您生成 java 类。

于 2013-06-12T10:27:00.080 回答