首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XMLUnit添加的标签?

XMLUnit添加的标签?
EN

Stack Overflow用户
提问于 2017-03-19 18:29:28
回答 1查看 95关注 0票数 0

当将以下两个文档与本文档中的XMLUnit (最新版本- 2.3.0)进行比较时,元素的顺序是不相关的,但是XMLUnit考虑到了这一点,而且由于新元素被附加到父标记的开头,因此在只有一个元素发生时,它将检测到多个更改。

原始XML (以前):

代码语言:javascript
复制
<ACVS>
    <ACV>
        <N>735</N>
        <C>S135</C>
    </ACV>
    <ACV>
        <N>736</N>
        <C>C0S135</C>
    </ACV>
    <ACV>
        <N>7Q4</N>
        <C>C0S135</C>
    </ACV>
</ACVS>

新XML (当前):

代码语言:javascript
复制
<ACVS>
    <ACV>
        <N>701</N>
        <C>C10S120</C>
    </ACV>
    <ACV>
        <N>735</N>
        <C>S135</C>
    </ACV>
    <ACV>
        <N>736</N>
        <C>C0S135</C>
    </ACV>
    <ACV>
        <N>7Q4</N>
        <C>C0S135</C>
    </ACV>
</ACVS>

比较:

代码语言:javascript
复制
Diff fileChanges = DiffBuilder.compare(Input.fromFile(previous))
            .withTest(Input.fromFile(current))
            .ignoreWhitespace()
            .checkForSimilar()
            .build();

fileChanges.getDifferences()

当元素不正确地匹配时,我得到了一些更改:

  • ACV1 - N1:预期的'735‘但是'701’
  • ACV1 - C1:预期的“S135”但是“C10S120”
  • ACV2 - N1:预期的'736‘但是'735’
  • 等等。然后:
  • ACV4:添加的新标记

当我希望有一个改变时:

  • ACV1:添加的新标记

有什么方法可以用XMLUnit实现这个结果吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-20 05:08:25

您希望通过指定标识对的XMLUnit来帮助ACV理解哪些ACV属于一起。但是,即使这样,您也会得到两个Difference,除了“新增的标记”之外,还会有一个“ACVS的子代是不同的”。

从您的示例来看,您似乎认为您的ACV是由N子元素的文本内容标识的。这就是你需要告诉XMLUnit的。这种情况与https://github.com/xmlunit/user-guide/wiki/SelectingNodes中的https://github.com/xmlunit/user-guide/wiki/SelectingNodes示例非常相似(将tr替换为ACVth替换为N)。您应该能够通过

代码语言:javascript
复制
ElementSelectors.conditionalBuilder()
    .whenElementIsNamed("ACV").thenUse(ElementSelectors.byXPath("./N", ElementSelectors.byNameAndText))
    .elseUse(ElementSelectors.byName)
    .build();

或者是它的变体。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42890455

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档