Autor Téma: xmldokument problem  (Přečteno 1140 krát)

Offline Ján Masaryk

  • Mladík
  • **
  • Příspěvků: 69
  • Karma: 5
    • Verze Delphi: 2010
Re:xmldokument problem
« Odpověď #15 kdy: 23-11-2017, 17:33:06 »
Keď počujem XML, tak sa mi zježia všetky chlpy na tele :)

Skús superobject viď príloha, alebo si to stiahni z https://github.com/hgourvest/superobject

Primárne je to na prácu s JSON, ale dokáže to parsovať XML.
Skúsil som to a keď som videl výsledok, skoro som sa rozplakal od zlosti, ako komplikovane som robil parsery.

Malá ukážka kódu

Kód: Delphi [Vybrat]
  1.  
  2. // NACITANIE SUBORU
  3. cXML := XMLParseFile('161112202.xml', true);
  4.  
  5. // PRECITANIE POPISU 18. POLOZKY SUBORU
  6. cPopis := cXML.S['zbozi[18].popis'];
  7.  
  8.  

Doporučujem minimálne vyskúšať.




Offline František

  • Hrdina
  • ****
  • Příspěvků: 336
  • Karma: 3
    • Verze Delphi: primárne v XE5, občaas 10.1 starter, XE, BDS2006
Re:xmldokument problem
« Odpověď #16 kdy: 27-11-2017, 02:49:07 »
no kuknem, ale ako je to z rýchlosťou? (oproti DOM, SAX či xtr transformacie?)

Offline František

  • Hrdina
  • ****
  • Příspěvků: 336
  • Karma: 3
    • Verze Delphi: primárne v XE5, občaas 10.1 starter, XE, BDS2006
Re:xmldokument problem
« Odpověď #17 kdy: 27-11-2017, 08:43:40 »
alebo to najrýchlejšie prebehnem s pos()?

Offline Ján Masaryk

  • Mladík
  • **
  • Příspěvků: 69
  • Karma: 5
    • Verze Delphi: 2010
Re:xmldokument problem
« Odpověď #18 kdy: 27-11-2017, 10:02:11 »
V demos si skompiluj VirtualTreeView v Options si zaškrtni PACK XML a skús otvoriť nejaké xml.

Skúšal som to na 37MB XML - soedit ho zobrazil za cca 7 sekúnd. V čase bolo aj načítanie do TreeView
Neskúšal merať čas na XMLParseFile(), to si môžeš vyskúšať sám.

Páči sa mi na tom to, že pristupuješ priamo ku konkrétnej položke XML
Vlastne to simuluje, že XML nie je XML ale JSON  ;)

napr.

Kód: Delphi [Vybrat]
  1. cPopis := cXML.S['zbozi[18].popis'];
  2.  
  3. // priamo
  4. dTerminOd := StrToDate(cXML.S['Zajezd[0].Terminy.Termin[0].DatumOd']);
  5.  
  6. // alebo v Cykle
  7. dTerminOd := StrToDate(cXML.S['Zajezd[' + IntToStr(nI) + '].Terminy.Termin['+ IntToStr(nJ) +'].DatumOd']);
  8.  

Nemám to podrobne preskúmané, lebo to momentálne používam na jednoduchšie XML-ká.

Na rozdiel od JSON-u sú všetky hodnoty String a teda musíš robiť konverziu..

Ešte jedna dôležitá poznámka - XML musí byť utf-8.
« Poslední změna: 27-11-2017, 10:04:55 od Ján Masaryk »

Offline František

  • Hrdina
  • ****
  • Příspěvků: 336
  • Karma: 3
    • Verze Delphi: primárne v XE5, občaas 10.1 starter, XE, BDS2006
Re:xmldokument problem
« Odpověď #19 kdy: 07-03-2018, 20:38:53 »
V demos si skompiluj VirtualTreeView v Options si zaškrtni PACK XML a skús otvoriť nejaké xml.

Skúšal som to na 37MB XML - soedit ho zobrazil za cca 7 sekúnd. V čase bolo aj načítanie do TreeView
Neskúšal merať čas na XMLParseFile(), to si môžeš vyskúšať sám.

nejako sa z toho neviem vymotat, mozes mi to trocha rozpisat?

Offline Ján Masaryk

  • Mladík
  • **
  • Příspěvků: 69
  • Karma: 5
    • Verze Delphi: 2010
Re:xmldokument problem
« Odpověď #20 kdy: 11-03-2018, 11:48:07 »
Prepáč, že odpovedám tak neskoro...

Neviem, s čím konkrétne máš problém tak ti posielam ten súbor skompilovaný.

Stiahni si ho na http://www.slovtech.sk/soedit.exe
Daj mi vedieť, keď to stiahneš, až to vymažem.

Spusti program, v Options si zaškrtni PACK XML (bez toho to nejako blbo zobrazuje) a otvor nejaké xml-ko.
Po kliknutí na ľubovoľnú časť xml-ka vidíš presnú cestu, z ktorej vyčítaš konkrétnu hodnotu.
Je to výborná pomôcka pre zorientovanie sa v xml-ku.

Stiahni si superobject - link som už posielal - a rozbaľ ho.

Vytvor si projekt, nakopíruj tam superdate.pas, superobject.pas, supertimezone.pas, supertypes.pas, superxmlparser.pas.
Ak náhodou používaš WXP, treba urobiť v supertimezone.pas nejakú úpravu. Neviem, či tam treba všetky súbory, ja som šiel cestou ľahšieho odporu na nakopíroval som ich do projektu všetky  :)

Otvorenie súboru a prácu so súborom máš popísané v predchádzajúcej diskusii.

Toť vsjo  ;)

Offline František

  • Hrdina
  • ****
  • Příspěvků: 336
  • Karma: 3
    • Verze Delphi: primárne v XE5, občaas 10.1 starter, XE, BDS2006
Re:xmldokument problem
« Odpověď #21 kdy: 14-03-2018, 22:51:00 »
Ďakujem, super

už som to pochopil a vyriešil ...no teda ešte len že to otvorím ... ale do 10 s som otvoril všetky XML-ká, ktoré mi trvalo aj 5 min. cez transformácie ... no paráda

 

S rychlou odpovědí můžete používat BB kódy a emotikony jako v běžném okně pro odpověď, ale daleko rychleji.

Jméno: E-mail:
Ověření:
Datový typ v Delphi, který má True a False: