我是quickfix和java的初学者。
通常当我想删除quickfix消息中的字段时,我使用带有标记的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 = default10 = 105
删除字段,但当我尝试以相同的方式删除9标记:
message.getHeader().removeField(9);
我打印时的输出产生相同的代码而没有删除字段:
9 = 7435 = 149 = WFSComp23452 = 20130613-22:06:32.81956 = ClientComp1234112 = default10 = 105
9场还在那里!
我的猜测是因为quickfix会自动生成体长,但是如何将其删除?谢谢。
指向quickfix的链接:
答案 0 :(得分:3)
是的,QuickFIX会自动生成BodyLength和Checksum。
我无法想象为什么在世界上你认为你需要删除这些字段,但是如果你真的想要删除这些字段的消息字符串,你可以在事后使用正则表达式来修改它:
message.toString().replaceAll("\09=[0-9]*","").replaceAll("\010=[0-9]*","")
但是,我真的没有理由这样做。