Autor Téma: XML parser - zase  (Přečteno 419 krát)

Offline František

  • Guru
  • *****
  • Příspěvků: 708
  • Karma: 7
    • Verze Delphi: primárne v XE5, občas 10.2.3 comunity
XML parser - zase
« kdy: 04-11-2021, 07:43:34 »
mam cez XML data binding vygenerovane triedy ku XMLkam
ale otvorenie je pomale ci skor zdlhave 100MB xml s 200k polozkami cca 30 min
typujem to na MSXML, je mozne ho nejako nahradit tak aby som to zrychlil a nadalej popuzival vybindovane triedy?

Offline Jirka

  • Hrdina
  • ****
  • Příspěvků: 447
  • Karma: 9
    • Verze Delphi: XE2
Re:XML parser - zase
« Odpověď #1 kdy: 04-11-2021, 08:35:20 »

Offline František

  • Guru
  • *****
  • Příspěvků: 708
  • Karma: 7
    • Verze Delphi: primárne v XE5, občas 10.2.3 comunity
Re:XML parser - zase
« Odpověď #2 kdy: 04-11-2021, 11:15:47 »
neskusil som este nic, ale skor som sa pytal na sposob ako to vymenit bez dopadu na sucasny kod ...
s oxml to pojde?

Offline jikulis

  • Nováček
  • *
  • Příspěvků: 29
  • Karma: 0
    • Verze Delphi: 2010, XE3, Seattle, Sydney, Rio, Alexandria
Re:XML parser - zase
« Odpověď #3 kdy: 05-11-2021, 15:26:42 »
neskusil som este nic, ale skor som sa pytal na sposob ako to vymenit bez dopadu na sucasny kod ...
s oxml to pojde?

Ano, jen musíš vynutit použití omnixml DOM, namísto msxml DOM. Což lze udělat buď explicitně, na konkrétní instanci TXMLDocument, viz:

Kód: Delphi [Vybrat]
  1. uses
  2.   Xml.XmlIntf, Xml.XMLDoc, Xml.xmldom, xml.omnixmldom;
  3. ...
  4. begin
  5.   var LXmlDoc:= NewXMLDocument;
  6.   (LXmlDoc as TXMLDocument).DOMVendor:= OmniXML4Factory;
  7. end;
  8.  

..nebo plošně, pomocí globální proměnné DefaultDOMVendor:

Kód: Delphi [Vybrat]
  1. uses
  2.   Xml.XmlIntf, Xml.XMLDoc, Xml.xmldom, xml.omnixmldom;
  3. ...
  4. begin
  5.   xml.xmldom.DefaultDOMVendor:= xml.omnixmldom.sOmniXmlVendor;
  6.   var LXmlDoc:= NewXMLDocument;
  7. end;
  8.