AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Endlich mal eine schnelle Xml-Komponente gesucht oder selber tippern?

Endlich mal eine schnelle Xml-Komponente gesucht oder selber tippern?

Ein Thema von hoika · begonnen am 24. Apr 2019 · letzter Beitrag vom 29. Apr 2019
Antwort Antwort
Seite 1 von 5  1 23     Letzte » 
hoika
Online

Registriert seit: 5. Jul 2006
Ort: Magdeburg
7.090 Beiträge
 
Delphi XE4 Professional
 
#1

Endlich mal eine schnelle Xml-Komponente gesucht oder selber tippern?

  Alt 24. Apr 2019, 21:28
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?
Heiko

Geändert von hoika (24. Apr 2019 um 21:51 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von blawen
blawen
Online

Registriert seit: 30. Nov 2003
Ort: Luterbach (CH)
368 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

AW: Endlich mal eine schnelle Xml-Komponente gesucht oder selber tippern?

  Alt 24. Apr 2019, 21:45
Ich pers. nutze die Delphi eigene Komponente (TXMLDocument) und bin damit zufrieden.
Allerdings habe ich keine Erfahrung, mit so grossen Dateien.
Roland
  Mit Zitat antworten Zitat
hoika
Online

Registriert seit: 5. Jul 2006
Ort: Magdeburg
7.090 Beiträge
 
Delphi XE4 Professional
 
#3

AW: Endlich mal eine schnelle Xml-Komponente gesucht oder selber tippern?

  Alt 24. Apr 2019, 21:52
Hallo,
Danke, habe das oben gleich mal mit eingefügt
TXMLDocument benutzt ja idR MS-XML.
Heiko
  Mit Zitat antworten Zitat
hoika
Online

Registriert seit: 5. Jul 2006
Ort: Magdeburg
7.090 Beiträge
 
Delphi XE4 Professional
 
#4

AW: Endlich mal eine schnelle Xml-Komponente gesucht oder selber tippern?

  Alt 24. Apr 2019, 21:54
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
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von sh17
sh17

Registriert seit: 26. Okt 2005
Ort: Radebeul
1.464 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: Endlich mal eine schnelle Xml-Komponente gesucht oder selber tippern?

  Alt 25. Apr 2019, 07:38
Also in diesem Fall sollte ein SAX-Parser genommen werden.

Und für XML nutze ich

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

Sehr flott
Sven
--
  Mit Zitat antworten Zitat
hoika
Online

Registriert seit: 5. Jul 2006
Ort: Magdeburg
7.090 Beiträge
 
Delphi XE4 Professional
 
#6

AW: Endlich mal eine schnelle Xml-Komponente gesucht oder selber tippern?

  Alt 25. Apr 2019, 07:49
Danke.
Ich schau mir den mal an.
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
7.204 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#7

AW: Endlich mal eine schnelle Xml-Komponente gesucht oder selber tippern?

  Alt 25. Apr 2019, 08:20
Wir benutzen auch Oxml, wodurch die Ladezeiten nur noch grob ein Zehntel so lang sind im Vergleich zum internen Parser von Delphi.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
hoika
Online

Registriert seit: 5. Jul 2006
Ort: Magdeburg
7.090 Beiträge
 
Delphi XE4 Professional
 
#8

AW: Endlich mal eine schnelle Xml-Komponente gesucht oder selber tippern?

  Alt 25. Apr 2019, 08:27
Hallo,
der interne Parser ist ja afaik MS-Xml.

Klingt also erst mal gar nicht schlecht.
Heiko
  Mit Zitat antworten Zitat
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
444 Beiträge
 
Delphi 2007 Professional
 
#9

AW: Endlich mal eine schnelle Xml-Komponente gesucht oder selber tippern?

  Alt 25. Apr 2019, 08:37
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
Thomas Mueller
  Mit Zitat antworten Zitat
hoika
Online

Registriert seit: 5. Jul 2006
Ort: Magdeburg
7.090 Beiträge
 
Delphi XE4 Professional
 
#10

AW: Endlich mal eine schnelle Xml-Komponente gesucht oder selber tippern?

  Alt 25. Apr 2019, 10:41
Hallo,
spaßig ist aber anders.



Vielleicht schreibe ich mir doch was eigenes ...
Heiko
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:19 Uhr.
Powered by vBulletin® Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2019 by Daniel R. Wolf