gpt4 book ai didi

java - 使用 xmlunit 自定义输出消息进行 XML 比较

转载 作者:行者123 更新时间:2023-12-02 05:00:11 28 4
gpt4 key购买 nike

您好,我正在尝试使用 xmlunit 比较两个 xml 文件的内容
这是我的输入 xml

reference.xml

<?xml version="1.0" encoding="UTF-8"?>
<books>
<book>
<name>abc</name>
<isbn>9971-5-0210-0</isbn>
<author>abc</author>
<category></category>
</book>
<book>
<name>def</name>
<isbn>9971-5-0222-0</isbn>
<author>def</author>
</book>
</books>

compare.xml

<?xml version="1.0" encoding="UTF-8"?>
<books>
<book>
<name>abc</name>
<isbn>9971-5-0210-0</isbn>
<author>abc</author>
<category></category>
</book>
<book>
<name>def</name>
<isbn>9971-5-0222-0</isbn>
<author>def</author>
</book>
<book>
<name>ghi</name>
<isbn>9971-5-0222-0</isbn>
<author>test authora</author>
</book>
</books>

这里我们可以在 compare.xml 中观察到有 3 个图书节点。

我正在打印总差异并计数如下

 DetailedDiff detDiff = new DetailedDiff(diff);
List differences = detDiff.getAllDifferences();
System.out.println("Total differences:-->"+differences.size());
for (Object object : differences) {
Difference difference = (Difference)object;
System.out.println("***********************");
System.out.println(difference);
System.out.println("***********************");
}

输出:

**Total differences:-->4
<小时/>

子节点的预期数量为“5”,但实际为“7” - 比较/books[1] 与/books[1]

<小时/><小时/>

预期文本值''但是是' ' - 比较 在/books[1]/text()[3] 到 在/books[1]/text()[3]

<小时/><小时/>

预期存在子节点“null”,但实际上是“book” - 将 null 与/books[1]/book[3] 进行比较

<小时/><小时/>

预期存在子节点“null”,但为“#text” - 与 null 进行比较 在/books[1]/text()[4]

<小时/>

相反,有什么方法可以让我将更改视为只有 1 (因为我认为只添加一个图书节点,忽略内部标签),并且还可以将输出自定义为我们的自定义消息

最佳答案

第一步是忽略元素内容空白,这将消除第二个和第四个差异。

XMLUnit.setIgnoreWhitespace(true);

为了抑制其他两个差异之一,您需要覆盖 DifferenceListener 并显式忽略其中之一。根据您的描述,您希望只看到 CHILD_NODE_NOT_FOUND 差异。

    detDiff.overrideDifferenceListener(new DifferenceListener() {
@Override
public int differenceFound(Difference difference) {
return difference.getId() == DifferenceConstants.CHILD_NODELIST_LENGTH_ID
? RETURN_IGNORE_DIFFERENCE_NODES_IDENTICAL
: RETURN_ACCEPT_DIFFERENCE;
}
@Override
public void skippedComparison(Node control, Node test) { }
});

关于java - 使用 xmlunit 自定义输出消息进行 XML 比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28351670/

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