gpt4 book ai didi

xmlunit - 如何忽略与 XmlUnit 的 XML 声明差异?

转载 作者:行者123 更新时间:2023-12-05 04:06:35 27 4
gpt4 key购买 nike

如何配置 XmlUnit.Net 在比较两个文档时忽略 XML 声明?

假设我有以下控制文档:

<?xml version="1.0" encoding="utf-8"?>
<a><amount>1</amount></a>

我想比较的是:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<a><amount>1</amount></a>

比较应该没有差异。

我的期望是像这样使用 NodeFilter 应该可行,但它不可行:

var diff = DiffBuilder.Compare(control)
.WithTest(test)
.WithNodeFilter(n => n.NodeType != XmlNodeType.XmlDeclaration)
.Build();

diff.Differences.Count().Should().Be(0);

断言因两个差异而失败 - 一个是编码(不同的大小写),另一个是独立属性。我对任何一个都不感兴趣。

无论我说 n.NodeType != XmlNodeType.XmlDeclaration 还是 n.NodeType == XmlNodeType.XmlDeclaration 都没有区别。

我正在使用 XMLUnit.Core v2.5.1。

最佳答案

NodeFilter 仅适用于其他节点的子节点(由 XmlNode.ChildNodes 返回)。不幸的是,文档类型声明不是这种情况,这可能是一个错误。

在您的情况下,您想调整 DifferenceEvaluator 并降级您不感兴趣的差异。类似

DifferenceEvaluators.Chain(DifferenceEvaluators.Default,
DifferenceEvaluators.DowngradeDifferencesToEqual(ComparisonType.XML_STANDALONE, ComparisonType.XML_ENCODING))

会吞下差异。

也许您不想只计算差异,还想查看它们的严重程度。编码的差异将是“相似”的差异,而 standalone 的不同值很关键。

关于xmlunit - 如何忽略与 XmlUnit 的 XML 声明差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49770510/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com