Parsowanie niestandardowego formatu plik [Symfonia 3.x]

0

Witam,
czy ktoś może wie co to za format danych, pliku (przykład poniżej, pliki pochodzi z programu Symfonia Handel) i czy jest jakieś gotowe rozwiązanie do parsowania plików tego typu? Jest to podobne do JSONa. Próbowałem replace'em zrobić z tego JSONa, ale jeszcze nie do końca mi się to udało (problem z duplikatami). Ewentualnie jak nie ma takiego parsera to jak zrobić taki parser pliku? Jak przykładowo robi to Jackson w przypadku JSONa? Czego powinienem szukać, jakich tematów? Może jakieś tutorial, artykuły na blogach? Będę wdzięczny za każdą podpowiedzi, wskazówkę, punkt zaczepienia...

Jeszcze mi chodzi jeden trywialny pomysł po głowie..., ale może ktoś coś podpowie 😀

Fragment przykładowego pliku:

INFO{
	Nazwa programu ='Sage Symfonia 2.0 Handel 2017.d' Symfonia 2.0 Handel 2017.d
	Wersja_programu =213
	Wersja szablonu =3.2
	Kontrahent{
		id =-646249141
		kod =wypozycz
	}
}
Magazyn{
	kod =MAG
	nazwa =Magazyn główny
	miejscowosc =
	ulica =
	dom =
	lokal =
	kodpocz =
	rejon =
	nip =
	tel1 =
	tel2 =
	fax =
}
Kontrahent{
	Notatka_Dl{
		opis =
	}
}
TypyCen{
	Cena{
		subtyp =A
		subtypi =2
		flag =128
		netto =1
	}
	Cena{
		subtyp =B
		subtypi =4
		flag =128
		netto =1
	}
	Cena{
		subtyp =C
		subtypi =6
		flag =128
		netto =1
	}
	Cena{
		subtyp =D
		subtypi =8
		flag =128
		netto =0
	}
}
...
0

wyglada jak rezultat wywolania toString() na obiekcie, moze poszukaj pod haslami serializacji obiektu...

0

Jeżeli dobrze patrze to nie znajdziesz gotowego parsera do tego rodzaju plików tekstowych bo:
https://pomoc.symfonia.pl/Help/hm/ERP/2024_1_b/15150
To ichniejszy format wewnętrzny o wdzięcznej nazwie: Format 3.0.
Możesz próbować pisać do nich na support ale wątpie aby Ci udostępnili kod parsera albo liba do integracji w Javie.

Edit:
Zawsze możesz próbować pytać ChataGPT jak napisać "parser-potwora" do tego rodzaju plików.

3

Można skorzystać z generatora parserów typu ANTLR.

0

Zostawiam proste, trywialne i szybkie rozwiązanie jakby ktoś kiedyś potrzebował.

Ten format jest zbliżony do JSONa i wystarczy zamienić to tak, aby przechodziło walidację JSONa i użyć Jacksona do mapowania. Cały sekret w Jacksonie to użycie magicznej adnotacji:

@JsonAnySetter
public void set(String key, Document value) {
  if (key.equalsIgnoreCase("Dokument")) {
    this.documents.add(value);
  }
}

Jeszcze chodzi mi po głowie jeden pomysł - podzielić plik według sekcji i wtedy mapowanie powinno być jeszcze prostsze.

1 użytkowników online, w tym zalogowanych: 0, gości: 1