![]() |
Re: Schnelle XML Lib für große Dateien gesucht
Zitat:
Zitat:
|
Re: Schnelle XML Lib für große Dateien gesucht
Alzamir hat seinen Tipp mit der Datenbank doch schon gegeben.
Haste ja am Anfang nicht erwähnt. :zwinker: Die Jungs vom FastString-Projekt konnten ihre XML-Bestände mit ihren Routinen ordentlich optimieren, aber bei einer in UTF-8 kodierten XML-Datei, wäre ich da etwas vorsichtiger. Wenn man von Standards abweichen möchte, muss man sich nicht wundern (nicht zwingend jetzt aber vielleicht in zwei Jahren), wenn Datenbestände zur Hälfte inkonsistent sind, weil irgendwelche 0815-Parser die Standards nicht einhalten. So ein XML-Parser schreibt sich ja nun auch nicht von heut auf morgen. (siehe Muetze1, Himitsu, MSXML, OmniXML und Co.) |
Re: Schnelle XML Lib für große Dateien gesucht
Zitat:
nja, nun bin ich schon recht weit, da wär's blöd jetzt aufzuhören ... vorallem da ich hier noch ein Projekt hab, welches mal damit arbeiten soll :stupid: (wegen dem hab ich überhaupt erst damit angefangen) |
Re: Schnelle XML Lib für große Dateien gesucht
Zitat:
Zitat:
![]() ![]() Ich werde mir wohl eine Klasse schreiben, die zum Einen die XML-Datei parst und zum anderen die Daten in eine DB schreibt. Das ist nach dem Thread in meinen Augen die beste Lösung. Zumal man sicher auch schon ein paar Routen vorberechnen müsste. Ob das aber alles für eine lokale DB taugt... Mal sehen.. |
Re: Schnelle XML Lib für große Dateien gesucht
Hallo Daniel,
ich verwende NativeXML von SimDesign, kostet nicht viel und soll auch bei riesigen Datenmengen schnell sein. Hier mal ein Benchmark eines Demo-Projektes: Zitat:
![]() Gruß Jürgen |
Re: Schnelle XML Lib für große Dateien gesucht
Hi Pfoto,
Danke für den Hinweise. :thumb: Allerdings stoßt es mir etwas sauer auf, wenn ich eine kommerzielle Unit in einem GPL-Projekt verwenden sollte. Dennoch danke.. ;) |
Re: Schnelle XML Lib für große Dateien gesucht
Zitat:
Ich danke euch für die Hilfe. :thumb: |
Re: Schnelle XML Lib für große Dateien gesucht
Zitat:
|
Re: Schnelle XML Lib für große Dateien gesucht
Zitat:
Ja, zum Debuggen war mir das gestern zu spät. :) Ich habe mal geguckt, er hängt bei dieser Funktion:
Delphi-Quellcode:
Ich werde mal gucken, was es für Lösungen zu diesem Problem im Forum gibt, aber ich denke mal, ich bräuchte irgendwie angepasste Funktionen von FileSize und BlockRead, die eben nicht den Integer nutzen, sondern einen größeren Datentyp.
FUNCTION TXmlParser.LoadFromFile (Filename : STRING; FileMode : INTEGER = fmOpenRead OR fmShareDenyNone) : BOOLEAN;
// Loads Document from given file // Returns TRUE if successful VAR f : FILE; ReadIn : INTEGER; OldFileMode : INTEGER; BEGIN Result := FALSE; Clear; // --- Open File OldFileMode := SYSTEM.FileMode; TRY SYSTEM.FileMode := FileMode; TRY AssignFile (f, Filename); Reset (f, 1); EXCEPT EXIT; END; TRY // --- Allocate Memory TRY FBufferSize := Filesize (f) + 1; GetMem (FBuffer, FBufferSize); EXCEPT Clear; EXIT; END; // --- Read File TRY BlockRead (f, FBuffer^, FBufferSize, ReadIn); //<= DORT. Der Wert von FBufferSize ist durch den Integerüberlauf negativ. (FBuffer+ReadIn)^ := #0; // NULL termination EXCEPT Clear; EXIT; END; FINALLY CloseFile (f); END; FSource := Filename; Result := TRUE; FINALLY SYSTEM.FileMode := OldFileMode; END; END; Gruß, Daniel |
Re: Schnelle XML Lib für große Dateien gesucht
Was spricht denn gegen den guten alten XmlReader aus dem .Net Framework?
Der lässt ist ebenfalls non-cahing/forward-only und lässt einige SAX Parser weit hinter sich. Ist auch noch super easy zu nutzen:
Code:
var readerSettings = new XmlReaderSettings
{ ValidationType = ValidationType.None, IgnoreComments = true }; using (var fs = new FileStream("yourFrigginHugeFile.xml", FileMode.Open, FileAccess.Read)) using (var reader = XmlReader.Create(fs, readerSettings)) { while (reader.Read()) { //... } } |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:45 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz