Wie analysiere ich diese OFX-Datei?

8

das ist eine originale ofx Datei, wie sie von der m Bank kommt (keine Sorge, da ist nichts sensibel, ich schneide den mittleren Teil mit allen Transaktionen aus)

  

Open Financial Exchange (OFX) ist ein   Datenstromformat für den Austausch   Finanzinformationen, die sich entwickelt haben   von Microsoft Open Financial   Connectivity (OFC) und Intuit's Open   Dateiformate austauschen.

Jetzt muss ich das analysieren. Das habe ich schon gesehen Frage , aber das ist es nicht eine dup, weil ich daran interessiert bin, wie das geht.

Ich bin mir sicher, dass ich einige clevere Regexps finden würde, die den Job machen würden, aber das ist hässlich und fehleranfällig (wenn das Format geändert wird, einige Felder fehlen, die Formatierung / Leerzeichen anders sind etc etc .. .)

%Vor%

Ich benutze derzeit diesen Code, der mir das gewünschte Ergebnis gibt:

%Vor%

das ist wirklich hässlich und wenn das eine gültige XML-Datei wäre, würde ich mich persönlich dafür umbringen, aber wie geht das besser?

    
The Surrican 20.04.2011, 13:32
quelle

2 Antworten

4

Ihr Code scheint in Ordnung zu sein, wenn man bedenkt, dass die Datei nicht XML oder gar SGML ist. Das einzige, was Sie tun könnten, ist, einen allgemeineren SAX-ähnlichen Parser zu erstellen. Das heißt, Sie durchlaufen den Eingabestrom einfach einen Block nach dem anderen (wobei Block ein beliebiger Wert sein kann, beispielsweise eine Zeile oder einfach eine festgelegte Anzahl von Zeichen). Rufen Sie dann jedes Mal eine Rückruffunktion auf, wenn Sie auf <ELEMENT> stoßen. Sie können sogar so phantasievoll vorgehen wie beim Erstellen einer Parser-Klasse, in der Sie Callback-Funktionen registrieren können, die bestimmte Elemente anhören.

Es wird generischer und weniger "hässlich" sein (für eine Definition von "hässlich"), aber es wird mehr Code zu pflegen sein. Schön zu tun und schön zu haben, wenn Sie dieses Dateiformat viel (oder in vielen verschiedenen Variationen) analysieren müssen. Wenn Ihr veröffentlichter Code der einzige Ort ist, an dem Sie dies tun, dann KISS .

    
Sander Marechal 20.04.2011, 14:51
quelle
0
%Vor%     
Chris Jones 17.02.2014 14:37
quelle

Tags und Links