Я работаю над приложением, которое сравнивает файлы XML. Пользователь может ввести список узлов, в которых они хотят исключить в сравнении. Для сравнения я использую XMLUNIT . Мне нужно динамически добавить пользовательский ввод.
Приведенный ниже код работает, но не является динамическим для пользовательского ввода:
private bool Example1(ISource control, ISource test)
{
var excludedNodes = new List<string> { "UserInput1", "UserInput2", "UserInput3" };
var diff = DiffBuilder
.Compare(control)
.WithTest(test)
.WithNodeFilter(x => !(x.Name.Equals(excludedNodes[0]) || x.Name.Equals(excludedNodes[1]) || x.Name.Equals(excludedNodes[2])))
.Build();
var hasDifferences = diff.HasDifferences();
return hasDifferences;
}
Моя попытка динамически создать вышеуказанное:
private bool Example2(ISource control, ISource test)
{
var excludedNodes = new List<string> { "UserInput1", "UserInput2", "UserInput3" };
var diffBuilder = DiffBuilder
.Compare(control)
.WithTest(test);
foreach (var excludedNode in excludedNodes)
{
diffBuilder.WithNodeFilter(x => !x.Name.Equals(excludedNode));
}
var diff = diffBuilder.Build();
var hasDifferences = diff.HasDifferences();
return hasDifferences;
}
Похоже, что объединение в цепочку "WithNodeFilter", как я это делал в примере 2. не работает.