mam częstej konieczności badania, że pliki XML są prawidłowe i potrzeba sposób testowania że 2 ciągi XML (lub dokumenty) są identyczne, takie jak:Czy istnieje AssertEquals do testowania plików XML?
XMLAssert.assertEquals(String xmlExpected, String xmlActual);
Ponadto wskazane byłoby, aby pokazać, gdzie Dokumenty XML różniły się.
ten powinien być ograniczony do dokumentów z standalone = „yes” (tj DTD lub schematu - jeśli w ogóle - nie ma znaczenia). Oznacza to, że nie ma wartości domyślnych, a typy atrybutów są nieistotne. Sąsiednie tekstowe węzły PCDATA powinny być znormalizowane (konkatenowane).
Należy pamiętać, że nie można tego zrobić po prostu przez leksykalnego porównaniu
Assert.assertEquals(xmlExpected, xmlActual);
jak istnieją w nieskończoność wiele sposobów uczynienia tego samego zbioru informacji XML. Porównanie powinno uwzględniać przestrzenie nazw elementów i atrybutów (ale nie wartości atrybutów - które nie są częścią specyfikacji).
Jednym ze sposobów, aby to zrobić, może być kanonizacja obu dokumentów. Alternatywnie można użyć XMLDiff.
Nie mogłem znaleźć niczego, więc napisałem własną parę lat temu.
[Mam też szczególną potrzebę porównywania zmiennoprzecinkowych chociaż musi to być hack od typu danych CDATA lub PCDATA można się tylko domyślać i jest poza bezpośrednim zakresem na pytanie.]
UWAGA: Prawdopodobnie konieczne będzie konkretne rozwiązanie dla każdego języka. Jestem szczególnie zainteresowany Java i C#
Dzięki. Jest to z pewnością tak wszechstronne, jak chciałem, i nieco mocniejsze niż to, co napisałem. Szkoda, że nie odkryłem tego 2 lata temu –