jest to jeden z tych problemów, które brzmi jak to będzie łatwe do zacząć w ith, ale im więcej kopiesz, tym więcej znajdziesz w przestrzeni problemowej.
Istnieje wiele wcześniej istniejących narzędzi, które będą robić różnice xml - zarówno w stylu GUI (podobnie jak w tekstowych narzędziach różnicowych), jak i w wierszu poleceń/komponentach (które są bardziej tym, co " d być po). XMLDiff jest jednym z takich przypadków, jak już wspomniano.
Kłopoty zaczynają się, gdy zadajesz pytania typu: co mam zrobić? Czy potrzebujesz kodu powrotu, który mówi, czy są one takie same czy różne (dla celów testów jednostkowych może to być wystarczające) - czy chcesz raportu, który mówi Ci, jakie są różnice? (może być również przydatny w testach jednostkowych, jeśli chcesz znaleźć przyczynę problemu)? Jeśli to drugie, jak chcesz te informacje? Czy chcesz edytować odległość? Czy chcesz interpretować wartości numeryczne i odróżniać je od siebie?
Co z zamawianiem węzłów? Czy węzły potomne powinny znajdować się w określonej kolejności - czy też są to te same węzły, ale w innej kolejności jest to w porządku?
Prawdopodobnie będziesz także chciał móc określić, co porównać. Czy przestrzenie nazw powinny się zgadzać? Czy białe spacje są znaczące w dowolnym miejscu? Czy istnieją pewne węzły, które zawsze chcesz ignorować (np. Atrybut "czasu"), czy chcesz dokładniej kontrolować dokładnie, które węzły są porównywane, a które nie?
Aby porównać wartości liczbowe, należy uwzględnić tolerancje? W przypadku porównań tekstowych (węzły tekstowe), czy biały tekst jest znaczący w numerze w numerze? A co z wielką literą?
I możesz iść dalej (jak to zrobiłem w analizie dla takiego projektu, w którym ostatnio pracuję).
Każde narzędzie rozwiązuje te problemy w różnym stopniu i na różne sposoby.
Być może zdecydujesz się po prostu zachować to tak proste, jak to tylko możliwe i pójść na coś, co ma bezpośredni, węzeł po węźle, porównanie, bez interpretacji - i na końcu powiedzieć, czy są one takie same lub różne. Wierzę, że xmldiff da ci to (i trochę więcej).
Warto również pomyśleć o tym, że jeśli chcesz zajmować się przypadkami, takimi jak różne zamówienia węzłów lub ignorowanie niektórych gałęzi, możesz zastosować transformację xslt do dokumentu testowego przed porównaniem, aby znormalizować go zgodnie z własnymi regułami.
To samo pytanie [tutaj] (http://stackoverflow.com/questions/167946/how-would-you-compare- dwa-xml-documents). –