gpt4 book ai didi

java - 如何使用 XMLUnit 只比较文件的某些部分?

转载 作者:行者123 更新时间:2023-11-30 01:38:39 25 4
gpt4 key购买 nike

如何使用 XMLUnit 比较 2 个不同文件中的 2 个或更多节点(同名)?

我有 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,但这感觉像是一个 hack。还有比这更好的方法吗?

最佳答案

使用 XPath 测试不是更容易吗?我想象这样的事情会起作用

//select all elements which don't have a type attribute
String xpath = "//result[not(@type)]";
assertXpathsEqual(xpath, file1sub, xpath, file1sub2)

关于java - 如何使用 XMLUnit 只比较文件的某些部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1850559/

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