Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   Delphi XML Dateien vergleichen (https://www.delphipraxis.net/40063-xml-dateien-vergleichen.html)

sBorchert 10. Feb 2005 15:00


XML Dateien vergleichen
 
Moin!
Ich bin gerade dabei, ein Programm zu schreiben, welches die Unterschiede zwischen zwei XML-Dateien ausgibt. Allerdings soll das ziemlich spezielle Kriterien erfüllen:
[file1.xml]
XML-Code:
<model>
 <constants>
  <constant name="const_01" value="1" />
  <constant name="const_02" value="1" />
 </constants>
 <classes>
  <class name="cl_01">
   <attributes>
    <attribute name="attr_01" value="1" />
    <attribute name="attr_02" value="1" />
   </attributes>
  </class>
 </classes>
</model>
[file2.xml]
XML-Code:
<model>
 <constants>
  <constant name="const_01" value="2" />
  <constant name="const_03" value="1" />
 </constants>
 <classes>
  <class name="cl_01">
   <attributes>
    <attribute name="attr_01" value="2" />
   </attributes>
  </class>
  <class name="cl_02" />
 </classes>
</model>
[result.xml]
XML-Code:
<model>
 <constants>
  <added>
   <constant name="const_03" value="2" />
  </added>
  <modified>
   <constant name="const_01" oldvalue="1" newvalue="2" />
  </modified>
  <removed>
   <constant name="const_02" value="1" />
  </removed>
 </constants>
 <classes>...</classes>
</model>
Habt ihr irgendwelche Anregungen, wie ich das am Besten lösen könnte?
Ich verwende Delphi7 und MSXML4. Bisher habe ich folgendes versucht:
- alle Elemente von file2 durchgehen
- Element in file1 vorhanden
- ja: alle Attribute überprüfen
- Attributwert geändert
- Element in Node "modified" einhängen
...

Da bin ich allerdings kläglich gescheitert. Ist wohl nicht mein Tag heute.
Ich würde mich über Anregungen eurerseits freuen.

Schöne Grüsse,

Stefan


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:36 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