Ich schreibe einen C# -Code mit der Absicht, regelmäßig eine XML-Datei herunterzuladen, den resultierenden XML-Code mit einer zuvor heruntergeladenen Version von XML zu vergleichen (Änderungen zu erkennen) und dann die Änderungen zu "bearbeiten" CRUD-Anweisungen), indem Datenbankdatensätze aktualisiert werden, die die Entitäten in der XML widerspiegeln.XML für Unterschiede vergleichen
Ich brauche Hilfe mit dem "Vergleich der resultierenden XML mit einer zuvor heruntergeladenen Version , um Änderungen zu erkennen" Teil der Anforderungen.
So ... die folgenden zwei XML-Dokumenten unter Berücksichtigung der geringen Unterschiede haben ...
Original-
<ROOT>
<Stock>
<Vehicle id="2574074">
<DealerName>Super Cars London</DealerName>
<FriendlyName>Ford Ranger 3.2 double cab 4x4 XLT auto</FriendlyName>
<ModelName>Ranger</ModelName>
<MakeName>Ford</MakeName>
<Registration>DG55TPG</Registration>
<Price>40990</Price>
<Colour>WHITE</Colour>
<Year>2014</Year>
<Mileage>52000</Mileage>
<Images>
<Image Id="4771304" ThumbUrl="http://www.somewhere.com/GetImage.aspx?ImageId=4771304&Type=6&Width=60&Height=60&FeedId=42" FullUrl="http://www.somewhere.com/GetImage.aspx?ImageId=4771304&Type=6&Width=640&FeedId=42" LastModified="2016-02-02T08:24:51.48" Priority="1"/>
</Images>
</Vehicle>
<Vehicle id="2648665">
<DealerName>Super Cars London</DealerName>
<FriendlyName>BMW 320i</FriendlyName>
<ModelName>3 Series</ModelName>
<MakeName>BMW</MakeName>
<Registration>CN03YZG</Registration>
<Price>24990</Price>
<Colour>WHITE</Colour>
<Year>2013</Year>
<Mileage>96000</Mileage>
<Images/>
</Vehicle>
</Stock>
</ROOT>
New
<ROOT>
<Stock>
<Vehicle id="2575124">
<DealerName>Supercars London</DealerName>
<FriendlyName>Ford Ranger 3.2 double cab 4x4 XLT auto</FriendlyName>
<ModelName>Ranger</ModelName>
<MakeName>Ford</MakeName>
<Registration>DK08FKP</Registration>
<Price>43990</Price>
<Colour>WHITE</Colour>
<Year>2014</Year>
<Mileage>30000</Mileage>
<Images>
<Image Id="5119812" ThumbUrl="http://www.somewhere.com/GetImage.aspx?ImageId=5119812&Type=6&Width=60&Height=60&FeedId=42" FullUrl="http://www.somewhere.com/GetImage.aspx?ImageId=5119812&Type=6&Width=640&FeedId=42" LastModified="2016-04-11T13:08:42.81" Priority="1"/>
</Images>
</Vehicle>
<Vehicle id="2648665">
<DealerName>Super Cars London</DealerName>
<FriendlyName>BMW 320i</FriendlyName>
<ModelName>3 Series</ModelName>
<MakeName>BMW</MakeName>
<Registration>CN03YZG</Registration>
<Price>24990</Price>
<Colour>BRILLIANT WHITE</Colour>
<Year>2013</Year>
<Mileage>96000</Mileage>
<Images>
<Image Id="5201856" ThumbUrl="http://www.somewhere.com/GetImage.aspx?ImageId=5201856&Type=6&Width=60&Height=60&FeedId=42" FullUrl="http://www.somewhere.com/GetImage.aspx?ImageId=5201856&Type=6&Width=640&FeedId=42" LastModified="2016-04-25T12:12:05.827" Priority="1"/>
<Image Id="5201857" ThumbUrl="http://www.somewhere.com/GetImage.aspx?ImageId=5201857&Type=6&Width=60&Height=60&FeedId=42" FullUrl="http://www.somewhere.com/GetImage.aspx?ImageId=5201857&Type=6&Width=640&FeedId=42" LastModified="2016-04-25T12:12:09.117" Priority="2"/>
<Image Id="5201858" ThumbUrl="http://www.somewhere.com/GetImage.aspx?ImageId=5201858&Type=6&Width=60&Height=60&FeedId=42" FullUrl="http://www.somewhere.com/GetImage.aspx?ImageId=5201858&Type=6&Width=640&FeedId=42" LastModified="2016-04-25T12:12:13.59" Priority="3"/>
<Image Id="5201859" ThumbUrl="http://www.somewhere.com/GetImage.aspx?ImageId=5201859&Type=6&Width=60&Height=60&FeedId=42" FullUrl="http://www.somewhere.com/GetImage.aspx?ImageId=5201859&Type=6&Width=640&FeedId=42" LastModified="2016-04-25T12:12:18.453" Priority="4"/>
<Image Id="5201860" ThumbUrl="http://www.somewhere.com/GetImage.aspx?ImageId=5201860&Type=6&Width=60&Height=60&FeedId=42" FullUrl="http://www.somewhere.com/GetImage.aspx?ImageId=5201860&Type=6&Width=640&FeedId=42" LastModified="2016-04-25T12:12:22.853" Priority="5"/>
</Images>
</Vehicle>
</Stock>
</ROOT>
Zusammenfassung der Unterschiede
- Fahrzeug
id="2575124"
ist nicht im Original vorhanden. Dies stellt ein "create" dar. - Fahrzeug
id="2574074"
ist nicht in der neuen vorhanden. Dies stellt ein "Löschen" dar. - Das Fahrzeug
id="2648665"
(das sowohl im Original als auch neu vorhanden ist) hat einen anderen<Colour>
(WHITE -> BRILLIANT WHITE). Dies stellt ein "Update" dar. - Fahrzeug
id="2648665"
hat auch neue<Image>
Knoten in der neuen. Dies stellt ein "create" dar (als Bilder werden 1: M mit dem Fahrzeug in der Datenbank sein).
Ich habe bei XMLDiff sah einen DiffGram mit Add/Wechsel zu erzeugen/entfernen Anweisungen, aber ich kann nicht einen Weg finden, um es ein DiffGram zu machen zu erzeugen, die die Veränderungen darstellen I zusammengefasst habe, zum Beispiel es sieht die Änderungen 1 und 2 als "Änderung" - <xd:change match="@id">2648665</xd:change>
- anstelle der Abwesenheit und Hinzufügung eines Fahrzeugs.
Gibt es eine Möglichkeit, dies mit XMLDiff zu tun?
Oder gibt es einen "besseren" Weg, um das Ergebnis zu erreichen, das ich suche?