XML Files vergleichen im SynEdit

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
Antworten
Relexy18
Beiträge: 14
Registriert: Di 7. Mai 2019, 10:46

XML Files vergleichen im SynEdit

Beitrag von Relexy18 »

Hallo Zusammen,

ich brauche in der Firma ein Vergleichstool um XML-Files auf Richtigkeit zu überprüfen.

XML-File-Alt vs. XML-File-New

Falls es unterschiede gibt möchte ich die in irgendeiner Weiße Farblich darstellen => ähnlich wie im Tool "Notepad++" nur hier steigt mir das Programm aus, wenn die Dateigröße >1000 (Schätzung) zeilen ist und ich bin etwas eingeschränkt in der Bedienung. Daher will ich ein eigenes Tool Programmieren.

aktueller Status:

ich habe zwei synEdit Fenster mit jeweils unterschiedlichen geladenen XML-Files
jetzt möchte ich Reihe für Reihe oder Node für Node diese miteinander vergleichen


InhaltBeispiel XML Alt bzw. Original

<Rec_SubstrateLocalAlignment>
<Enabled>1</Enabled>
<AlignmentName>153177_aAP601Fa_eut</AlignmentName>
</Rec_SubstrateLocalAlignment>
<Rec_SubstratePlacement>
<Enabled>1</Enabled>
<CameraNbr>1</CameraNbr>
<DieName>TMXXXX123</DieName>
<AlternateDieFlag>0</AlternateDieFlag>
<CameraHeight>0.000000</CameraHeight>
<PlacementForce>20</PlacementForce>
<Comment>M600</Comment>
<DwellTime>0</DwellTime>
<PlacementStation>1</PlacementStation>
<Lighting1>25</Lighting1>
<FlipStation>1</FlipStation>
<EnableVerify>1</EnableVerify>
<VerifyLighting1>30</VerifyLighting1>
<VerifyCameraNbr>1</VerifyCameraNbr>
<EnableSaveVerifySnap>1</EnableSaveVerifySnap>
<Comment2>MoCu xxxxxx</Comment2>
</Rec_SubstratePlacement>


Im zweiten XML-File soll, wenn es gut läuft das selbe stehen, falls es ungleich ist, dann sollen die ungleichen Einträge gezählt und farbig markiert sein.

<Rec_SubstrateLocalAlignment>
<Enabled>1</Enabled>
<AlignmentName>153177_aAP601Fa_XXX</AlignmentName>
</Rec_SubstrateLocalAlignment>
<Rec_SubstratePlacement>
<Enabled>1</Enabled>
<CameraNbr>1</CameraNbr>
<DieName>TMXXXX895</DieName>
<AlternateDieFlag>0</AlternateDieFlag>
<CameraHeight>0.000000</CameraHeight>
<PlacementForce>20</PlacementForce>
<Comment>M600</Comment>
<DwellTime>0</DwellTime>
<PlacementStation>1</PlacementStation>
<Lighting1>25</Lighting1>
<FlipStation>1</FlipStation>
<EnableVerify>1</EnableVerify>
<VerifyLighting1>30</VerifyLighting1>
<VerifyCameraNbr>1</VerifyCameraNbr>
<EnableSaveVerifySnap>1</EnableSaveVerifySnap>
<Comment2>MoCu xxxxxx</Comment2>
</Rec_SubstratePlacement>



Ich hoffe ihr könnt nachvollziehen was ich machen möchte?

Vielleicht gibt es auch eine Möglichkeit mit den USES XMLWrite , DOM das man hier das gesamte XML-Dokument prüft.

Vielen Dank für Eure Ideen und freue mich davon zu höhren

Benutzeravatar
theo
Beiträge: 8706
Registriert: Mo 11. Sep 2006, 19:01

Re: XML Files vergleichen im SynEdit

Beitrag von theo »

Warum nimmst du nicht ein allgemeines Diff-GUI-Tool?
Auf KDE z.B. Kompare (Screenshot mit deinem Beispiel).
Es gibt sicher ähnliche Tools für andere Systeme.
Dateianhänge
diff.png
diff.png (67.46 KiB) 663 mal betrachtet

Relexy18
Beiträge: 14
Registriert: Di 7. Mai 2019, 10:46

Re: XML Files vergleichen im SynEdit

Beitrag von Relexy18 »

Vielen Dank für deine Antwort,

ja ich verwende für so etwas normalerweise "Notepad++" hier gibt es eine ähnliche Funktion und die Funktioniert auch, aber bei meinem letzten Projekt mit über 20.000 XML-Zeilen hat es eine Fehlermeldung ausgegeben und der Vergleich wurde abgebrochen. Daher benötige ich eine alternative, auch deswegen, weil in unserer Firma nicht jede Software installiert werden darf /wird, ohne komplizierte Anträge etc. :(

So dachte ich vielleicht ist dies der "einfache" Weg. Aktuell behelfe ich mir so....

Ich speichere die Fehlerzeile (synedit.lines.item) bzw. ungleiche Zeile zum Original XML in einem Array und anschließend markiere ich diese Zeilen step by step.


Vorteil vom selber programmierten Tool => die Bearbeitung / Fehlerdokumention / Zusammenfassung kann variable gestaltet werden. Somit kann ich bugs im übergeordneten Programm schneller definieren und beheben.

wp_xyz
Beiträge: 4016
Registriert: Fr 8. Apr 2011, 09:01

Re: XML Files vergleichen im SynEdit

Beitrag von wp_xyz »

Ein einfaches Diff-Tool, das keine Installation erfordert ist TextDiff von Angus Johnson (http://www.angusj.com/delphi/textdiff.html). (Im Download stecken auch die Delphi-Sourcen; ich meine, irgendwo gelesen zu haben, dass es davon auch ein Lazarus-Port gibt, weiß aber nicht mehr wo).

charlytango
Beiträge: 424
Registriert: Sa 12. Sep 2015, 12:10
OS, Lazarus, FPC: Laz 2.0 fixes FPC 3.2 fixes
CPU-Target: Win 32Bit, 64bit
Wohnort: Wien

Re: XML Files vergleichen im SynEdit

Beitrag von charlytango »

könnte es hier sein ?

martin_frb
Beiträge: 546
Registriert: Mi 25. Mär 2009, 21:12
OS, Lazarus, FPC: Laz trunk / fpc latest release / Win and other
CPU-Target: mostly 32 bit

Re: XML Files vergleichen im SynEdit

Beitrag von martin_frb »

SynEdit.OnSpecialLineColors

Da wird für jede Zeile aufgerufen, und du kannst die *ganze* Zeile hervorheben.
Achtung, läuft im Paint Ereignis, also Berechnungen vorher machen, und cachen.

Für Wörter, SynPosSyn ? (oder ähnlich)

wp_xyz
Beiträge: 4016
Registriert: Fr 8. Apr 2011, 09:01

Re: XML Files vergleichen im SynEdit

Beitrag von wp_xyz »

charlytango hat geschrieben:
Do 4. Mär 2021, 21:50
könnte es hier sein ?
Ja, das ist es.

Es fehlt allerdings das eigentliche TextDiff-Programm, das im Original-ZIP noch enthalten ist. Als ich das heute nochmals ausprobiert habe, war Angus Johnsons' Seite sehr langsam - ich hoffe dass die demnächst nicht nur noch in der WaybackMachine zu finden ist... Falls es Probleme mit dem Download gibt, hänge ich das gezippte exe hier mal an (ich hab auf virustotal prüfen lassen -- keine von 70 Antiviren-Engines findet eine Bedrohung).
Dateianhänge
TextDiff.zip
(387.31 KiB) 30-mal heruntergeladen

Relexy18
Beiträge: 14
Registriert: Di 7. Mai 2019, 10:46

Re: XML Files vergleichen im SynEdit

Beitrag von Relexy18 »

Hallo,

wow super,ich glaube da komme ich ganz gut weiter mit ....vielen lieben Dank !

Antworten