2014-04-08 4 views
5

Ich verwende quickfix mit Python-Bindungen. Bei der Initialisierung während FIX44.xml mit erhalte ich folgende Fehlermeldung:quickfix - Konfiguration fehlgeschlagen: <message> enthält keine Felder

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 

Der Fehler aus der letzten Zeile in dem folgenden Code stammt:

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

ich den gleichen Fehler für FIX43.xml verwenden, aber FIX42.xml funktioniert gut . Diese XML-Dateien werden mit einem XML-Validator ausgecheckt. Da ich XML-Beispieldateien von der Quickfix-Site verwende, bezweifle ich, dass das Problem bei den Dateien liegt.
Was könnte diesen Fehler verursachen?

Antwort

10

Unglaublich, Quickfix ist nicht kompatibel mit dem XML von der Quickfix-Website. Ich fand die folgende Zeile in FIX44.xml:

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

die in der Tat keine Felder hat. Da ich diese Nachricht nicht benötige, habe ich einfach die Leitung entfernt und es funktioniert.