Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi XML Delta (https://www.delphipraxis.net/170296-xml-delta.html)

Pfaffe 10. Sep 2012 10:41

XML Delta
 
Aus meiner Datenbank exportiere ich eine xml-Datei. Diese wird extern geändert. Die xml-Datei ist recht groß, aber die Änderungen sind gering. Der Import in die Datenbank dauert mehrere Stunden.
Gibt es ein Delphi-Algorithmus oder ein Tool, welches mir eine xml-Datei nur mit den geänderte Daten zurück gibt, also z.B. Get_XML_Delta(const xml1, xml2: string): string;?

sh17 10. Sep 2012 10:55

AW: XML Delta
 
rdiff sollte helfen - direkt etwas mit delphi kenne ich nicht

gibts hier rdiff commandline

Dann lies dir das hier durch - speziell das Kapitel "Background Information - Using Rdiff"

//Edit Du müsstest dann natürlich den Diff selbst auswerten

vagtler 10. Sep 2012 10:56

AW: XML Delta
 
Was dauert denn daran Stunden? Das Auslesen der XML oder das Schreiben in die Datenbank?

himitsu 10. Sep 2012 11:09

AW: XML Delta
 
Nja, direkt in Delphi...

wenn die Reihenfolge der Knoten berücksichtigt werden muß (kommt auf's Selbe hinaus, wie beim schon genannten DIFF)
- man läd beide Dateien
- geht beide Dateien Knoten für Knoten durch und wenn sich was unterscheidet, dann fügt man das in eine neue XML ein, oder verarbeitet es direkt



wenn die Reihenfolge egal ist
- man geht die erste Datei durch
- sucht die entsprechenden Knoten in der anderen XML
- Unterschiede werden dann übernommen/verarbeitet

dann
- gleiche Knoten entweder löschen
- und alles von der 2 XML übernehmen
oder
- die zweite XML ebenfalls durchgehn
- und alles was in der Ersten nicht gefunden wird, übernehmen/verarbeiten (Unterschiede/Änderungen ignorieren, denn diese wurden ja schon behandelt)

Uwe Raabe 10. Sep 2012 11:23

AW: XML Delta
 
Microsoft bietet zwei Commandline-Tools XMLDiff und XMLPatch. Dabei erzeugt XMLDiff aus zwei XML-Dateien ein Diffgram in der die Änderungen in maschinenlesbarer Form (XML) dargestellt sind. Dabei werden auch so Sachen wie andere Reihenfolge der Attribute oder Child-Nodes korrekt behandelt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:07 Uhr.

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