2

私はクイックフィックスとJavaの両方の初心者です。

通常、クイックフィックス メッセージ内のフィールドを削除する場合、タグを引数として removeField メソッドを使用しますが、自動生成された 2 つのフィールド、BodyLength (タグ 9) と CheckSum (タグ 10) では機能しないようです。 )。

たとえば、メッセージを作成してから印刷します。

System.out.println(message)

与える

8=FIX.4.29=8635=149=WFSComp23452=20130613-21:45:22.28256=ClientComp1234109=default112=default10=067

次に、タグ番号 8 などのフィールドを次のように削除します。

message.getHeader().removeField(8);

もう一度印刷すると、

9=7435=149=WFSComp23452=20130613-22:06:32.81956=ClientComp1234112=デフォルト10=105

フィールドは削除されますが、同じ方法で 9 タグを削除しようとすると、次のようになります。

message.getHeader().removeField(9);

印刷すると、フィールドが削除されていない同じコードが出力されます。

9=7435 =149=WFSComp23452=20130613-22:06:32.81956=ClientComp1234112=デフォルト10=105

9 フィールドはまだあります。

私の推測では、クイックフィックスが体長を自動的に生成するためだと思いますが、どのようにそれを削除しますか? ありがとうございました。

クイックフィックスへのリンク:

javadoc: http://www.quickfixj.org/quickfixj/javadoc/1.5.3/

http://www.quickfixj.org/

4

1 に答える 1

3

はい、QuickFIX は BodyLength と Checksum を自動的に生成します。

なぜこれらのフィールドを削除する必要があると思うのか想像できませんが、これらのフィールドを削除したメッセージ文字列が本当に必要な場合は、事後に正規表現を適用してそれをこじ開けることができます:

message.toString().replaceAll("\09=[0-9]*","").replaceAll("\010=[0-9]*","")

繰り返しますが、これを行う正当な理由はまったくありません。

于 2013-06-14T00:50:01.857 に答える