У меня есть следующие строки
XmlNode controlNode = comparison.ControlDetails.Target;
XmlAttribute attr = controlNode as XmlAttribute; //I believe this line needs changing.
Моя цель - получить узел XML, [0] {Element, Name = “creationTimestamp”}, я не уверен, как получить этот узел XML иБуду признателен за некоторую помощь, пожалуйста, дайте мне знать, если вы хотите получить больше информации, я просто застрял на этом и был в течение нескольких дней, пожалуйста, помогите мне получить вышеуказанный элемент, я добавил свой метод.
отладка
Ниже приведен мой класс ElementDifferenceEvaluatorTest.cs со сборщиком xml и diff.
[TestFixture]
public class ElementDifferenceEvaluatorTest
{
[Test]
public void TestUserguideExample()
{ string xmla = @"<sbl xmlns:fpml='www.test.co.uk'>
<creationTimestamp>2018-09-12T17:33:06+01:00</creationTimestamp>
<messageVersion>2.0</messageVersion>
<publishedVersions>2.0</publishedVersions>
<waqeBundle>
<reference>123456</reference>
<firstReference>1234567</firstReference>
<version>15151515</version>
<type>The-Buumi</type>
<action>Yes</action>
<subAction>new_sumie</subAction>
</waqeBundle>
<sourceEnvironment>UAT2</sourceEnvironment>
</sbl>";
string xmlb =
@"<sbl xmlns:fpml='www.test.co.uk'>
<messageVersion>2.0</messageVersion>
<publishedVersions>2.0</publishedVersions>
<waqeBundle>
<reference>123456</reference>
<firstReference>1234567</firstReference>
<version>15151515</version>
<type>The-Buumi</type>
<action>Yes</action>
<subAction>new_sumie</subAction>
</waqeBundle>
<sourceEnvironment>UAT2</sourceEnvironment>
</sbl>";
var myDiff = DiffBuilder.Compare(xmla).WithTest(xmlb)
.WithDifferenceEvaluator(new ElementDifferenceEvaluator("creationTimestamp").Evaluate)
.IgnoreComments()
.CheckForSimilar()
.Build();
Assert.IsFalse(myDiff.HasDifferences(), myDiff.ToString());
}
}
}
Следующим является мой ElementDifferenceEvaluator.cs
public class ElementDifferenceEvaluator
{
private string attributeName;
public ElementDifferenceEvaluator(string attributeName)
{
this.attributeName = attributeName;
}
public ComparisonResult Evaluate(Comparison comparison, ComparisonResult outcome)
{
if (outcome == ComparisonResult.EQUAL || outcome == ComparisonResult.SIMILAR)
return outcome; // only evaluate differences.
XmlNode controlNode = comparison.ControlDetails.Target; //why is this null?
XmlAttribute attr = controlNode as XmlAttribute; //Why is this null?
if (attr != null)
{
if (attr.Name == attributeName)
{
return ComparisonResult.SIMILAR; // will evaluate this difference as similar
}
}
return outcome;
}
}
}