1
如何使用XMLUnit比较2个不同文件中的2个或更多节点(同名)?如何使用XMLUnit比较文件的某些部分?
我有一个看起来像这样2个XML文件:
<SearchResults>
<result type="header"> ...ignore this.... </result>
<result type="secondheader">...ignore this....</result>
<result>....data1....</result>
<result>....data2....</result>
<result>....data3....</result>
<result type="footer">...ignore this....</result>
</SearchResults>
这里是我的方法,我用到目前为止比较。问题是我不想比较带有结果标签的xml部分和其上的任何类型的属性标志。我怎样才能做到这一点?
public void compareXMLEqualityToLastTest() throws Exception {
System.out.println("Checking differences.");
File firstFile = new File("C:\\Eclipse\\workspace\\Tests\\log\\" +
"Test_2.xml");
String file1sub = readXMLFromFile(firstFile);
File secondFile= new File("C:\\Eclipse\\workspace\\Tests\\log\\" +
"Test_1.xml");
String file2sub = readXMLFromFile(secondFile);
assertXMLNotEqual("files are equal", file1sub, file2sub);
assertXMLEqual("files are not equal", file1sub, file2sub);
}
我发现了一个模糊的建议到XMLUnit测试说明书第5页上使用ElementQualifier,但我不明白它。我不知道如何告诉它要比较哪个节点。
Diff myDiff = new Diff(file1sub, file2sub);
myDiff.overrideElementQualifier(new ElementNameAndTextQualifier());
assertXMLEqual("But they are equal when an ElementQualifier controls " +
"which test element is compared with each control element", myDiff, true);
我应该遵循该路线并将此类添加到我的项目中吗?
org.apache.wink.test.diff.DiffWithAttributeQualifier
的念头闪过我的脑海里把节点分成的NodeList,然后用org.custommonkey.xmlunit.compareNodeList但感觉就像是一个黑客。有没有比这更好的方法?
看起来像答案,只要assertXpathsEqual能够得到一个NodeList而不只是一个节点。我会试试看。非常感谢这个想法。 – djangofan 2009-12-05 04:41:17
谢谢!这工作:String xpath =“// result [not(@type)]”; assertXpathsEqual(xpath,file1sub,xpath,file2sub); – djangofan 2009-12-05 04:56:54