【问题标题】:Matching tags with identical names but different child values匹配名称相同但子值不同的标签
【发布时间】:2018-11-07 02:27:38
【问题描述】:

我正在尝试使用 XMLUnit 2 来比较 xml 文件。

<composite>
    <data>
        <subtag>
            <code>1</code>
        </subtag>
        <subtag>
            <code>2</code>
        </subtag>
    </data>
</composite>

第二个文件是一样的,唯一的区别是“子标签”标签交换了位置。

<composite>
    <data>
        <subtag>
            <code>2</code>
        </subtag>
        <subtag>
            <code>1</code>
        </subtag>
    </data>
</composite>

到目前为止,我一直没有找到一组适合匹配这两者的 ElementMatchers。

这个问题有现成的解决方案吗?

【问题讨论】:

    标签: java xml xmlunit


    【解决方案1】:

    这与 XMLUnit 用户指南中的“tr 由嵌套的th 标识”示例几乎相同。一种解决方案是使用条件 ElementSelector 并确保它在决定采用哪个 subtag 时使用正确的规则 - 请参阅 https://github.com/xmlunit/user-guide/wiki/SelectingNodes#conditional-elementselectors

    在你的具体情况下

    ElementSelectors.conditionalBuilder()
        .whenElementIsNamed("subtag")
        .thenUse(ElementSelectors.byXPath("./code", ElementSelectors.byNameAndText))
        .elseUse(ElementSelectors.byName)
        .build();
    

    应该这样做。这假设您的 subtags 由其 code 子元素的嵌套文本标识。

    【讨论】:

    • 非常感谢,正是我需要的。
    猜你喜欢
    • 1970-01-01
    • 2014-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多