我是快速修复和java的初学者。
通常,当我想移除快速修复消息中的字段时,我使用带有标记的removeField方法作为参数,但这似乎不适用于自动生成的两个字段-- BodyLength (tag 9)和CheckSum (tag 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
九块地还在那里!
我猜是因为quickfix会自动生成车身长度,但是如何删除它呢?谢谢。
指向快速修复的链接:
javadoc:http://www.quickfixj.org/quickfixj/javadoc/1.5.3/
http://www.quickfixj.org/
发布于 2013-06-14 00:50:01
是的,QuickFIX自动生成BodyLength和校验和。
我无法想象为什么在世界上你认为你需要删除这些字段,但是如果你真的想要删除这些字段的消息字符串,你可以用一个在事实之后应用的正则表达式来实现它:
message.toString().replaceAll("\09=[0-9]*","").replaceAll("\010=[0-9]*","")不过,我也不认为有什么好的理由这么做。
https://stackoverflow.com/questions/17098126
复制相似问题