我有两个xml需要与不同的相似xml集进行比较,在比较时,我需要忽略基于某个条件的标记,例如
personal.xml-忽略全名
address.xml-igone zipcode
contact.xml-忽略家庭电话
这是密码
Diff documentDiff=DiffBuilder
.compare(actualxmlfile)
.withTest(expectedxmlfile)
.withNodeFilter(node -> !node.getNodeName().equals("FullName"))
.ignoreWhitespace()
.build();
如何在“.withnodefilter(node->)”中添加条件!node.getnodename().equals(“fullname”))“或者有更聪明的方法来实现这一点吗
1条答案
按热度按时间pprl5pva1#
可以使用“and”将多个条件连接在一起(
&&
):如果要保持生成器整洁,可以将节点筛选器移动到单独的方法:
这样做的风险是,您可能会有元素名称出现在多种类型的文件中,其中该节点需要从一种类型的文件中筛选,而不是从任何其他类型的文件中筛选。
在这种情况下,还需要考虑正在处理的文件的类型。例如,可以使用文件名(如果它们遵循合适的命名约定)或根元素(假设它们不同),例如
<Personal>
,<Address>
,<Contact>
-或者不管是什么,对你来说。但是,如果您需要区分xml文件类型,出于这个原因,最好使用这些信息来进行单独的分类
DiffBuilder
对象,使用不同的过滤器。这可能会导致代码更清晰。