相关疑难解决方法(0)

在Java中比较2个XML文档的最佳方法

我正在尝试编写一个应用程序的自动测试,它基本上将自定义消息格式转换为XML消息并将其发送到另一端.我有一组很好的输入/输出消息对,所以我需要做的就是发送输入消息并监听XML消息从另一端出来.

当需要将实际输出与预期输出进行比较时,我遇到了一些问题.我的第一个想法就是对预期和实际消息进行字符串比较.这样做效果不好,因为我们拥有的示例数据并不总是一致地格式化,并且通常会有不同的别名用于XML命名空间(有时根本不使用命名空间.)

我知道我可以解析两个字符串,然后遍历每个元素并自己进行比较,这不会太困难,但我觉得有一个更好的方法或我可以利用的库.

所以,归结起来,问题是:

给定两个包含有效XML的Java字符串,您将如何确定它们在语义上是否等效?如果您有办法确定差异是什么,可以获得奖励积分.

java xml testing comparison parsing

194
推荐指数
7
解决办法
18万
查看次数

如何使用XMLUnit的DetailedDifference忽略相同元素的顺序?

我想使用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)

java xmlunit

2
推荐指数
1
解决办法
2174
查看次数

标签 统计

java ×2

comparison ×1

parsing ×1

testing ×1

xml ×1

xmlunit ×1