我正在尝试编写一个应用程序的自动测试,它基本上将自定义消息格式转换为XML消息并将其发送到另一端.我有一组很好的输入/输出消息对,所以我需要做的就是发送输入消息并监听XML消息从另一端出来.
当需要将实际输出与预期输出进行比较时,我遇到了一些问题.我的第一个想法就是对预期和实际消息进行字符串比较.这样做效果不好,因为我们拥有的示例数据并不总是一致地格式化,并且通常会有不同的别名用于XML命名空间(有时根本不使用命名空间.)
我知道我可以解析两个字符串,然后遍历每个元素并自己进行比较,这不会太困难,但我觉得有一个更好的方法或我可以利用的库.
所以,归结起来,问题是:
给定两个包含有效XML的Java字符串,您将如何确定它们在语义上是否等效?如果您有办法确定差异是什么,可以获得奖励积分.
我想使用XMLUnit比较两个xml文件.我希望DetailedDiff不以不同的顺序报告相同的标签作为差异.例如,如果我使用这两个片段创建了一个DetailedDiff:
<a><b/><c/></a>
Run Code Online (Sandbox Code Playgroud)
和
<a><c/><b/></a>
Run Code Online (Sandbox Code Playgroud)
由于b和c标签乱序,DetailedDiff将创建两个差异.我已经尝试重写元素限定符,但它不会导致任何更改.我做错了什么或者这与XMLUnit无关?这里的参考是我用来比较两个xml文件的代码(不包括overrideElementQualifier调用).
public List<Difference> getDifferenceList(Reader file1, Reader file2) {
Diff d = new Diff(file1, file2); //I'm passing the args as FileReaders
d.overrideElementQualifier(new RecursiveElementNameAndTextQualifier());
detailedDiff = new DetailedDiff(d);
List<Difference> allDifferences = detailedDiff.getAllDifferences();
return allDifferences;
}
Run Code Online (Sandbox Code Playgroud)