gpt4 book ai didi

java - 将 xmlUnit 中的元素与空元素进行比较时发现意外差异

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:31:57 25 4
gpt4 key购买 nike

比较这两个 XML 片段:

testXml:
<ELEMENT1>
<CHILD1></CHILD1>
</ELEMENT1>

actualXml:
<ELEMENT1>
<CHILD1>notEmpty</CHILD1>
</ELEMENT1>

使用:

Diff diff = new Diff(testXml, actualXml);
Detailed detailedDiff = new DetailedDiff(diff);

现在 detailedDiff.getAllDifferences(); 将返回一个 DifferenceConstants.HAS_CHILD_NODES_ID 差异,如果您将差异打印到控制台,它看起来像这样:

Expected presence of child nodes to be 'false' but was 'true' - comparing <CHILD1...> at /ELEMENT1[1]/CHILD1[1] to <CHILD1...> at /ELEMENT1[1]/CHILD1[1]

我的问题是,为什么类型是 DifferenceConstants.HAS_CHILD_NODES_ID 而不是 DifferenceConstants.TEXT_VALUE_ID?两个 XML 片段的结构相同,但两者的文本值不同。

那么,为什么这不会引发差异?

最佳答案

尝试使用这个ElementQualifier:

Diff diff = new Diff(testXml, actualXml);
diff.overrideElementQualifier(new RecursiveElementNameAndTextQualifier() );
Detailed detailedDiff = new DetailedDiff(diff);

这里是 javadoc 的描述:

public RecursiveElementNameAndTextQualifier()

Uses element names and the text nested an arbitrary level of child elements deeper into the element to compare elements. Checks all nodes, not just first child element. Does not ignore empty text nodes.

这里感兴趣的是“不忽略空文本节点”。

似乎默认的 ElementQualifier 将空节点视为缺失节点,并且只检查与一个节点相关的第一个错误。因此,在您的情况下,可能只抛出“HAS_CHILD_NODES_ID”而不是还包含“TEXT_VALUE_ID”。

至少,RecursiveElementNameAndTextQualifier 更深入。

关于java - 将 xmlUnit 中的元素与空元素进行比较时发现意外差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12860230/

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