Java 如何使用Quickfixj删除BodyLength字段(标记9)或校验和(标记10)

Java 如何使用Quickfixj删除BodyLength字段(标记9)或校验和(标记10),java,quickfix,fix-protocol,Java,Quickfix,Fix Protocol,我是quickfix和java的初学者 通常,当我想删除quickfix消息中的一个字段时,我会使用removeField方法和一个标记作为参数,但这似乎不适用于自动生成的两个字段—BodyLength(标记9)和CheckSum(标记10) 例如,我创建了一条消息,然后打印 System.out.println(message) 给予 8=FIX.4.29=8635=149=WFSComp23452=20130613-21:45:22.28256=ClientComp1234109=defa

我是quickfix和java的初学者

通常,当我想删除quickfix消息中的一个字段时,我会使用removeField方法和一个标记作为参数,但这似乎不适用于自动生成的两个字段—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=default10=105

删除字段的位置,但当我尝试以与以下相同的方式删除9标记时:

message.getHeader().removeField(9);
打印时的输出会生成相同的代码,但不会删除字段:

9=7435=149=WFSComp23452=20130613-22:06:32.81956=ClientComp1234112=default10=105

9号场还在那里

我猜这是因为quickfix会自动生成车身长度,但如何删除它?多谢各位

指向quickfix的链接:

javadoc:


是,QuickFIX会自动生成车身长度和校验和

我无法想象为什么你会认为你需要删除这些字段,但是如果你真的想删除带有这些字段的消息字符串,你可以在事后应用正则表达式:

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

不过,我还是觉得没有什么好的理由这么做。

非常感谢。我也不知道,这是作业