2014-04-08 11 views
5

Tôi đang sử dụng quickfix với các ràng buộc python. Sau khi khởi tạo khi sử dụng FIX44.xml tôi nhận được lỗi sau:quickfix - Cấu hình không thành công: <message> không chứa trường nào

Traceback (most recent call last): 
    File "C:\dev\my_proj\quickfix_app.py", line 1227, in start_app 
    initiator = fix.SocketInitiator(self, storeFactory, settings, logFactory) 
    File "C:\Users\Me\virtual_environments\my_env\lib\site-packages\quickfix.py", line 34432, in __init__ 
    SocketInitiatorBase.__init__(self, application, storeFactory, settings, logFactory) 
    File "C:\Users\Me\virtual_environments\my_env\lib\site-packages\quickfix.py", line 34316, in __init__ 
    this = _quickfix.new_SocketInitiatorBase(*args) 
ConfigError: Configuration failed: FIX44.xml: Configuration failed: <message> contains no fields 

Các lỗi bắt nguồn từ dòng cuối cùng trong đoạn mã sau:

settings  = fix.SessionSettings('FIX44.xml') 
storeFactory = fix.FileStoreFactory(settings) 
logFactory = fix.ScreenLogFactory(settings) 
initiator = fix.SocketInitiator(self, storeFactory, settings, logFactory) 

tôi nhận được lỗi tương tự cho việc sử dụng FIX43.xml, tuy nhiên FIX42.xml hoạt động tốt . Các tệp xml này kiểm tra bằng trình xác thực XML. Khi tôi đang sử dụng các tập tin ví dụ xml từ trang web quickfix tôi nghi ngờ vấn đề là với các tập tin.
Điều gì có thể gây ra lỗi này?

Trả lời

10

Đáng kinh ngạc, quickfix không tương thích với xml từ trang web quickfix. Tôi đã tìm thấy dòng sau trong số FIX44.xml:

<message name='XMLnonFIX' msgcat='admin' msgtype='n' /> 

Thực sự không có trường nào. Vì tôi không cần thông báo này, tôi chỉ cần xóa dòng và nó hoạt động.

Các vấn đề liên quan