Autor Téma: Analyza XML  (Přečteno 341 krát)

Offline raul

  • Hrdina
  • ****
  • Příspěvků: 359
  • Karma: 15
    • Verze Delphi: FPC :D
Analyza XML
« kdy: 12-10-2020, 18:00:49 »
Zdar,
mam tu par XML souboru, u kterych zel bud chybi, nebo neni dodrzena dokumentace. Potreboval bych se v nich zorientovat, idealne nejakym poloautomatickym rezimem. Napadlo me udelat jakousi utilitku, kterou bych XML prohnal, a co jiz znam vynechal. Tim padem by mi v soubouru zbyvalo cim dal mene dat, ktera bych vzdy rune analyzoval a opet zaradil do utilitky. Napada me nejakej zpusob SAX parseru s tim, to pak prohnat DOM filtrem a prazdne nodes odmazavat.

S XML jsem snad nikdy nedelal, ale poridil jsem oXML s tim, ze se v tom nejako zorientuju. Bohuzel, nejak me furt v hlave nesedi ten postup tak, aby to bylo relativne jednoduche - pridat dalsi vec co znam, a zaroven odmazat z vystupu.

Tech souboru je cca 8 typu, data se meni vicemene porad (i pribyvaji dalsi nodes, nebo naopak nekde nejsou, atributy nekdy jsou, nekdy ne), navic velikost je kolem par desitek MB, takze nejak jednorazove zpracovani asi nehrozi.

Tuhle utilitku bych mrsknul na vstup a pokud (po zakladnim naprogramovani) nebude po parsingu vysledek prazdnej (tzn mam zpracovany vsechny data), poslal bych to obsluze, at si poradi.

Tzn cosi jako inteligentnejsi filtr v XML souboru, kde co znam z nej zmizim, co neznam v nem necham.

Neresil jste nekdo neco podobneho ?
Lazarus 1.6.3:), FPC, Intel/Arm, Windows/Linux

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 5450
  • Karma: 41
    • Verze Delphi: W10 + Delphi 10.4 professional
Re:Analyza XML
« Odpověď #1 kdy: 12-10-2020, 18:37:10 »
Neviem či to pomôže, no pri čítaní som narazil na toto https://en.delphipraxis.net/topic/3638-an-xml-dom-with-just-8-bytes-per-node/
Check out some of the interesting algorithms and data structures used to create an extremely light-weight XML DOM.
« Poslední změna: 12-10-2020, 18:39:15 od Stanislav Hruška »
W10 64b, Delphi 10.4, FireBird 3.05
Expert na kladenie nejasne formulovaných otázok.

Offline raul

  • Hrdina
  • ****
  • Příspěvků: 359
  • Karma: 15
    • Verze Delphi: FPC :D
Re:Analyza XML
« Odpověď #2 kdy: 12-10-2020, 18:47:25 »
Uplne asi ne. Prozatim to prohanim SAX parserem a zaznamenavam path u textu, attributy u startelement. Timhle pak chci nakrmit DOM a kouknout pres XPath na vzorek dat obsazenych, ty si vypsat a rucne zakomponovat. Pak tyhle data smazu z DOMU, projedu to odzadu na test prazdnych vetvi a .. Ja nevim.. Zitra tam zas bude neco jinak a ...
Lazarus 1.6.3:), FPC, Intel/Arm, Windows/Linux

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 5450
  • Karma: 41
    • Verze Delphi: W10 + Delphi 10.4 professional
Re:Analyza XML
« Odpověď #3 kdy: 12-10-2020, 19:04:25 »
Ja som ten odkaz dal preto, lebo to je uvedené aj ako študijný materiál. Aspoň som to tak pochopil. Ostatní to chválili.
W10 64b, Delphi 10.4, FireBird 3.05
Expert na kladenie nejasne formulovaných otázok.

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 3004
  • Karma: 135
    • Verze Delphi: D2007, XE3, DX10
Re:Analyza XML
« Odpověď #4 kdy: 12-10-2020, 22:43:10 »
Neresil jste nekdo neco podobneho ?
Podobneho uplne ne, ale dost jsme pouzivali XSLT transformace. Tou by se asi dalo replikovat na vystup jen to, cemu nerozumis.

Offline raul

  • Hrdina
  • ****
  • Příspěvků: 359
  • Karma: 15
    • Verze Delphi: FPC :D
Re:Analyza XML
« Odpověď #5 kdy: 13-10-2020, 10:17:19 »
Diky, toho jsem se trochu obaval, neb cas na uceni XSLT neni.
Zatim se tedy jevi jako "rychla" a funkci cesta to project SAXem, kouknout na elementy a path u dat, posleze to pres XPath projizdet, ulozit do db a odmazavat. Zbytek holt poslat obsluze.
Lazarus 1.6.3:), FPC, Intel/Arm, Windows/Linux

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 3004
  • Karma: 135
    • Verze Delphi: D2007, XE3, DX10
Re:Analyza XML
« Odpověď #6 kdy: 13-10-2020, 12:20:48 »
Diky, toho jsem se trochu obaval, neb cas na uceni XSLT neni.
Jj, a alespon me se to pred lety ucilo dost ztuha a po 10+ letech bych mohl zacit znova :-(

Offline František

  • Guru
  • *****
  • Příspěvků: 596
  • Karma: 6
    • Verze Delphi: primárne v XE5, občas 10.2.3 comunity
Re:Analyza XML
« Odpověď #7 kdy: 16-10-2020, 00:45:21 »
a skúšal si XML Mapper z tools delfi?

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 3004
  • Karma: 135
    • Verze Delphi: D2007, XE3, DX10
Re:Analyza XML
« Odpověď #8 kdy: 17-10-2020, 08:33:49 »
a skúšal si XML Mapper z tools delfi?
Jedine, ze bys ten mapper pustil vzdycky na vzorek dat a pak nejak porovnaval verze vytvorenych trid.

Ale jinak mam dojem, ze kdyz soubor nesouhlasi s vytvorenym DOM modelem, ze nejde nacist a i kdyby nahodou sel, tak se nedostanes k tem novym neznamym elementum.

Teoreticky by k tomu nemelo dochazet, protoze by k souboru mela existovat definice (DTD) nebo schema a jakmile XML neprojde validaci, tak se tim dal nezabyvat a hodit to zdroji na hlavu. Ale nevim, proc to OP potrebuje resit.

Offline raul

  • Hrdina
  • ****
  • Příspěvků: 359
  • Karma: 15
    • Verze Delphi: FPC :D
Re:Analyza XML
« Odpověď #9 kdy: 17-10-2020, 11:20:33 »
U neceho DTD je, validaci (jejich) to projde, ale import pak hlasi zavadu v datech (bez upresneni ani radku). U neceho ani neni DTD, jen treba odkaz na podobne DTD (ze z nej vychazej), ale maj tam upravy a ty uz nedokumentuji. No a my ty data potrebujem analyzovat, upravit a filtrovat mezi temito systemy, takze takova filtering proxy :) Vydavatel XML si s daty dela psi kusy a tudiz potrebuju i eventnout tyhle udalosti (jako treba ze nakupni cena je vyssi nez prodejni, obecne se treba ceny zmeni nekolikrat denne o desitky % apod).

Kazdopadne cesta, kterou jsem zvolil se zda se funkcni. Mam datove typy (ty si odvozuju), mam seznamy polozek, a ted to prskam pres xpath do pg, kde to budu dale zpracovavat.
Lazarus 1.6.3:), FPC, Intel/Arm, Windows/Linux

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 3004
  • Karma: 135
    • Verze Delphi: D2007, XE3, DX10
Re:Analyza XML
« Odpověď #10 kdy: 17-10-2020, 11:46:54 »
Vydavatel XML si s daty dela psi kusy
Takhle nejak jsem se pred lety dostal k te XLST transformaci, protoze soubory, ze kterych jsme chteli dolovat data, meli na svedomi PHP strikaci, kteri nedokazali ani splnit zakladni syntakticka pravidla XML a vytvarely well formed dokumenty, natoz definovat a vytvaret platne soubory. Tam jsme zacali tim, ze jsme si museli napsat preprocesor, ktery vytvarel well formed documents a pak jsme na to pousteli ty transformace.

Offline raul

  • Hrdina
  • ****
  • Příspěvků: 359
  • Karma: 15
    • Verze Delphi: FPC :D
Re:Analyza XML
« Odpověď #11 kdy: 17-10-2020, 11:52:01 »
Vuci veku nas dvou bych rekl, ze moje zpracovavany XML delaj potomci tehle tvejch strikacu :) Bohuzel tito tvorove maji tendenci se neuveritelne mnozit (nejedna se uplne o malou firmu).

Je videt, ze to generujou pres write[random(ln)](); :) :) Strukturu obcas teda nastesti i dodrzej.. (Krom jednoho, kde kdyz mu lehne cosi na serveru, tak mrdne do xml cosi jako http error 500 (tam uz to seru a natvrdo parsuju jen 2kb a vic) :)
Lazarus 1.6.3:), FPC, Intel/Arm, Windows/Linux

Offline František

  • Guru
  • *****
  • Příspěvků: 596
  • Karma: 6
    • Verze Delphi: primárne v XE5, občas 10.2.3 comunity
Re:Analyza XML
« Odpověď #12 kdy: 18-10-2020, 14:32:48 »