Delphi-PRAXiS
Seite 1 von 5  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Endlich mal eine schnelle Xml-Komponente gesucht oder selber tippern? (https://www.delphipraxis.net/200475-endlich-mal-eine-schnelle-xml-komponente-gesucht-oder-selber-tippern.html)

hoika 24. Apr 2019 21:28

Endlich mal eine schnelle Xml-Komponente gesucht oder selber tippern?
 
Hallo,
ein schöner provokanter Titel ;)

ich habe diverse Xml-Dateien (20-50 MB gross).
Der Aufbau ist jeweils pro Datei fest vorgegeben, jeder Knoten ist in einer separaten Zeile (#13#10).

Bei der Nutzung diverser Xml-Komponenten (JEDI NativeXml, MS-XML, TXMLDocument) habe ich immer das Problem,
dass diese zeichenweise durch den ByteStream der Datei durchlaufen und dabei ihre internen Strukturen aufbauen.

Das passt ja auch ganz gut, wenn die Struktur unbekannt ist, aber ist ziemlich langsam.

Bsp.
Eine Datei mit einer sehr einfachen Xml-Struktur dauert aufgrund der Anzahl der Elemente (~50.000) sehr lange.
Baue ich das per StringList nach (ich kenne ja die einfache Struktur der Datei), dauert es statt der 30 Sekunden nur 0,5 Sekunden zum Laden der Daten.
Wie gesagt: Ich kenne die einfache Struktur.

Ich könnte jetzt für eine paar der Dateien eigene Lade-Implementationen bauen,
oder es gibt eine schnellere Implementation für Xml-Dateien?


Als Grundübel habe ich die lange Parser-Zeit und das Einsortieren in interne Strukturen erkannt (Quellcode hatte ich mir bei dem JEDI's angesehen).

Schön wäre eine On-the-fly-Implementierung, die bei jedem Knoten alle Parent-Knoten mitliefert,
und wo ich dann gezielt sagen könnte -> "Nehme ich und packe es in meine eigenen Strukturen".

Kennt jemand so eine Komponente?

blawen 24. Apr 2019 21:45

AW: Endlich mal eine schnelle Xml-Komponente gesucht oder selber tippern?
 
Ich pers. nutze die Delphi eigene Komponente (TXMLDocument) und bin damit zufrieden.
Allerdings habe ich keine Erfahrung, mit so grossen Dateien.

hoika 24. Apr 2019 21:52

AW: Endlich mal eine schnelle Xml-Komponente gesucht oder selber tippern?
 
Hallo,
Danke, habe das oben gleich mal mit eingefügt ;)
TXMLDocument benutzt ja idR MS-XML.

hoika 24. Apr 2019 21:54

AW: Endlich mal eine schnelle Xml-Komponente gesucht oder selber tippern?
 
Hallo,
was ich vorhin mit On-The-Fly meinte, war ein SAX-Parser, siehe auch hier etwa in der Mitte

https://forums.embarcadero.com/messa...ssageID=657749

sh17 25. Apr 2019 07:38

AW: Endlich mal eine schnelle Xml-Komponente gesucht oder selber tippern?
 
Also in diesem Fall sollte ein SAX-Parser genommen werden.

Und für XML nutze ich

http://www.kluug.net/oxml.php

Sehr flott

hoika 25. Apr 2019 07:49

AW: Endlich mal eine schnelle Xml-Komponente gesucht oder selber tippern?
 
Danke.
Ich schau mir den mal an.

jaenicke 25. Apr 2019 08:20

AW: Endlich mal eine schnelle Xml-Komponente gesucht oder selber tippern?
 
Wir benutzen auch Oxml, wodurch die Ladezeiten nur noch grob ein Zehntel so lang sind im Vergleich zum internen Parser von Delphi.

hoika 25. Apr 2019 08:27

AW: Endlich mal eine schnelle Xml-Komponente gesucht oder selber tippern?
 
Hallo,
der interne Parser ist ja afaik MS-Xml.

Klingt also erst mal gar nicht schlecht.

dummzeuch 25. Apr 2019 08:37

AW: Endlich mal eine schnelle Xml-Komponente gesucht oder selber tippern?
 
MSXML als SAX-Parser ist nach meiner Erfahrung da am schnellsten. (Und ich habe mehr Erfahrung mit XML-Dateien einlesen als mir lieb ist ...)

Nachteil von MSXML ist allerdings, dass das Fehlerhandling eine Katastrophe ist (passenderweise ist die häufigste Fehlermeldung "Catastrophic Failure" ;-) ).

Nur so als Beispiel, wie spaßig das sein kann:

https://stackoverflow.com/questions/...ader-in-delphi

hoika 25. Apr 2019 10:41

AW: Endlich mal eine schnelle Xml-Komponente gesucht oder selber tippern?
 
Hallo,
spaßig ist aber anders.

;)

Vielleicht schreibe ich mir doch was eigenes ...


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:19 Uhr.
Seite 1 von 5  1 23     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz