2011-06-23 6 views
10

通貨/通貨に使用するJavaデータ型に関するいくつかの質問を読んだ後、通貨/金額の値を最低単位(セントなど)として保存するint/longメソッドを使用することに決めました。どのXMLデータタイプを通貨/通貨に使用する必要がありますか?

これはデータをXML形式で保存する場合にも適用されますか?それは、データを格納するときだけXMLの10進数形式に「解析される」こと、そして私がデータを読み取る際に再び「解析された」になるので、私の心に来る

最初にすることは、ないです。

私はこれに慣れているので、どんな提案も大歓迎です。

答えて

6

私はあなたの要件にこれほど少ない入力でデザインを与えるために、この

<xsd:simpleType name="money"> 
     <xsd:restriction base="xsd:decimal"> 
     <xsd:fractionDigits value="2"/> 
     </xsd:restriction> 
</xsd:simpleType> 
+0

ここに完全なサンプルがあります:http://www.java2s.com/Code/XML/XML-Schema/fractionDigitsformoneytype.htm – Cris

+1

「scale」ではなく「decimal」の制限として 'fractionDigits'を意味すると思います – Vihung

+1

通貨によっては、0〜3小数部が必要です。したがって、制限は無効です。 – eskatos

9

がハードに使用が、私はお金を入れないだろう通貨ずにXMLに金額:

<amount currency="GBP">230.45</amount> 

しかし、あなたの場合もしあなたが彼らが複数の通貨を扱うことを示唆するなら、宇宙からの誰かのようにあなたを扱うかもしれません...

私はあなたがXMLをうまく設計したのは、人間の読者は、ドキュメントに達することなく、これが何を意味するのかを正確に推測するだろうか?すべての人が要件の見解を共有するわけではなく、時には実用的ではありません。しかし、小数点を省略すると、データがラインのどこかで誤って処理されることを尋ねるだけです。

+0

私は可読性の点に同意します。今日私がここで得た答えは、一緒にとてもうまく融合しました。ありがとうございました。 –

1

私はこの

<complexType name="PaymentAmountType"> 
    <annotation><documentation>Type representing a payment amount (e.g. price or total)</documentation></annotation> 
    <attribute name="currencyCode" type="payment:CurrencyCodeType" use="required"/> 
    <attribute name="amount" type="payment:AmountType" use="required"/> 
</complexType> 

<simpleType name="AmountType"> 
    <restriction base="decimal"> 
    <fractionDigits value="2"/> 
    </restriction> 
</simpleType> 

<simpleType name="CurrencyCodeType"> 
    <restriction base="string"> 
    <minLength value="3"/> 
    <maxLength value="3"/> 
    <pattern value="[A-Z]{3}"/> 
    </restriction> 
</simpleType> 

これは私が3文字(ISO 4217)通貨コードと小数点以下に制限量の組み合わせとして、私の金額を表すことができますを使用しています。

ユーザーの目に混乱を与えないように、すべての有効なISO 4217通貨コードを指定する列挙型として通貨コードを定義することができます。たとえば、英ポンドのスターリングがGBPまたはUKP。