1

まず、リンク テキストを読みましたが、問題は解決しません。

エイリアシングで XStream を使用しています。

Condition は、いくつかの異なる実装を持つインターフェースです。クラス属性を削除したい。XStream は、実装クラスがあいまいな場合に class 属性を使用することを知っており、実装クラスの最大 1 つのエイリアスをセットアップできます。class 属性をまとめて削除し、 type 属性と他の子要素の存在を使用して、実装クラスを決定したいと考えています。これは可能ですか?

私が現在持っているXMLは次のとおりです。

<NextDestinations>
  <Connector>
    <DestinationId>2</DestinationId>
  </Connector>
  <Connector>
    <DestinationId>3</DestinationId>
    <condition class="com.orchestral.rhapsody.configuration.filter.condition.JavaScriptCondition" type="JAVASCRIPT">
      ...
    </condition>
  </Connector>
  <Connector>
    <DestinationId>4</DestinationId>
    <condition class="com.orchestral.rhapsody.configuration.filter.condition.MessageTypeCondition">
      <type>CONDITIONAL</type>
      ...
    </condition>
  </Connector>
  <Connector>
    <DestinationId>5</DestinationId>
    <condition class="com.orchestral.rhapsody.configuration.filter.condition.MessageTypeCondition">
      <type>CONDITIONAL</type>
      ...
    </condition>
  </Connector>
  <Connector>
    <DestinationId>6</DestinationId>
    <condition class="com.orchestral.rhapsody.configuration.filter.condition.PropertyCondition">
      <type>CONDITIONAL</type>
      ...
    </condition>
  </Connector>
  <Connector>
    <DestinationId>7</DestinationId>
    <condition class="com.orchestral.rhapsody.configuration.filter.condition.FieldCondition">
      <type>CONDITIONAL</type>
      ...
    </condition>
  </Connector>
  <noMatchDestination>8</noMatchDestination>
  <errorDestination>9</errorDestination>
</NextDestinations>

ここに私が欲しいXMLがあります:

<NextDestinations>
  <Connector>
    <DestinationId>1</DestinationId>
  </Connector>
  <Connector>
    <DestinationId>2</DestinationId>
    <condition type="JAVASCRIPT">
      ...
    </condition>
  </Connector>
  <Connector>
    <DestinationId>3</DestinationId>
    <condition type="CONDITIONAL">
      ...
    </condition>
  </Connector>
  <Connector>
    <DestinationId>4</DestinationId>
    <condition type="CONDITIONAL"
      ...
    </condition>
  </Connector>
  <Connector>
    <DestinationId>5</DestinationId>
    <condition type="CONDITIONAL">
      ...
    </condition>
  </Connector>
  <Connector>
    <DestinationId>6</DestinationId>
    <condition type="CONDITIONAL">
      ...
    </condition>
  </Connector>
  <Connector>
    <DestinationId>7</DestinationId>
    <condition type="CONDITIONAL"
      ...
    </condition>
  </Connector>
  <noMatchDestination>8</noMatchDestination>
  <errorDestination>9</errorDestination>
</NextDestinations>
4

2 に答える 2

1

インターフェイスのタイプ [xstream.aliasType(...)] のエイリアスを作成することでクラス属性の問題を解決できましたが、明らかにインターフェイスのインスタンスを作成できず、デフォルト クラスが存在するため、逆シリアル化が不可能になりました。適切ではありません。

最終的な解決策は、驚くほど簡単なカスタム コンバーターを作成することでした。

于 2010-08-04T04:17:50.900 に答える
0

XStream との結びつきの程度にもよりますが、MOXy JAXBを使用した次のアプローチは人々にとって役に立ちます。

于 2010-08-03T18:35:58.570 に答える