2

私は現在、JaxBを使用してxml情報の読み取り/書き込みを処理するJavaコードに取り組んでいます。プログラム全体で使用されるJavaクラスにデータを入力します。ある時点で、クラスはマーシャリングされ、xmlに書き戻されます。私はこれに問題はなく、物事は期待どおりに機能しています。

私が興味を持っているのは、JaxBが浮動小数点数を書き出す方法の形式を変更する方法があるかどうかです。たとえば、私が使用しているxmlスキーマの一部には、次の抜粋が含まれています。

.
.
<xs:element name="myObfuscatedValue">
  <xs:complexType>
    <xs:simpleContent>
      <xs:extension base="xs:double">
        <xs:attrbute name="myObfuscatedValue__comment" type="comment" use="optional" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
</xs:element>
.
.

したがって、マーシャリングを解除すると、「myObfuscatedValue」は基本的にDoubleとして入力されます。次に、JaxBで生成されたクラスのラッパークラスがあり、ユーザーは標準のセッター/ゲッターを介して変数にアクセス/変更できます。マーシャリングバックも正常に機能します。

私もやりたいのは、JaxBに特定の数値形式(「0.0000E00」のようなDecimalFormatに似たもの)でdoubleを書き出すことです。これは簡単に行うことができますか?これですが、xml / schemas / JaxBに関する知識が最新ではないことを認めます。これを行うためにxjc呼び出しを変更する方法はありますか?可能であれば、スキーマファイルを変更しないようにします(異なる言語の複数のコード。それを変更すると、最初にそれらのコードのいずれかが壊れるかどうかを理解する必要があります)。

この問題に関するヘルプ、洞察、提案をいただければ幸いです。

4

1 に答える 1

1

を使用しXmlAdapterて、XMLでの値の表現方法をカスタマイズできます。XmlAdapter以下は、XmlSchemaからオブジェクトモデルを生成する場合の使用方法を示す例です。

XmlAdapterJavaクラスから開始するときに使用する別の例を次に示します。

于 2011-10-13T01:04:54.220 に答える