Я был бы очень признателен за некоторую помощь и реализацию логики, используя только XMLUNIT DifferenceEvaluator.
В любом случае, у меня есть содержимое XML в их соответствующих строках, например, XMLA и XMLB, я пытаюсь использовать класс XMLUNIT оценщика различий дляопределить поведение различий.
Я хочу добиться следующих сценариев.// Сценарий 1 У XMLA есть элемент <creationTimestamp>2018-09-12T17:33:06+01:00</creationTimestamp>";
, но у XMLB нет вышеуказанного элемента, я хочу трактовать это поведение как другое, сгенерировать исключение XMLUNIT по умолчанию, говоря, что элемент отличается от XMLB ... Мне нужно изменить свой существующийлогика, поскольку я хочу рассматривать это как другое, в настоящее время это не происходит, и это рассматривает это как подобное.
Сценарий 2, если оба XMLS имеют элемент <creationTimestamp>
со значениями внутри них, но в XMLB значение внутри элемента <creationTimestamp>
отличается, я хочу обработать эту разницу так же, как элемент <creationTimestamp>
существует в обоих XMLS, только значения разные, не знаю, как этого добиться.
Пожалуйста, помогите мне достичь этих 2 сценариев.
Пожалуйста, добавьте немного логики в мою существующую логику
Мой класс IgnoreAttributeDifferenceEvaluatorTest.cs
[TestClass()]
public class IgnoreAttributeDifferenceEvaluatorTest
{
[TestMethod()]
public void TestUserguideExample()
{
string xmla = @"
<creationTimestamp>2018-09-12T17:33:06+01:00</creationTimestamp>";
string xmlb =
@"
<testVersion>2018-09-12T14447:33:06+01:00</testVersion>";
var myDiff = DiffBuilder.Compare(xmla).WithTest(xmlb)
.WithDifferenceEvaluator(
new IgnoreAttributeDifferenceEvaluator("creationTimestamp").Evaluate)
.CheckForSimilar()
.IgnoreElementContentWhitespace()
.IgnoreComments()
.IgnoreWhitespace()
.Build();
Microsoft.VisualStudio.TestTools.UnitTesting.Assert.IsFalse(myDiff.HasDifferences(), myDiff.ToString());
}
}
}
Мой класс IgnoreAttributeDifferenceEvaluator.cs
public class IgnoreAttributeDifferenceEvaluator
{
private string attributeName;
public IgnoreAttributeDifferenceEvaluator(string attributeName)
{
this.attributeName = attributeName;
}
public ComparisonResult Evaluate(Comparison comparison, ComparisonResult outcome)
{
if (outcome == ComparisonResult.EQUAL || outcome == ComparisonResult.SIMILAR) return outcome; // only evaluate differences.
if (outcome == ComparisonResult.DIFFERENT)
{
return ComparisonResult.SIMILAR; //returns as simmilar
}
return outcome;
}
}
}