代码之家  ›  专栏  ›  技术社区  ›  Ish

在使用XMLUnit 2.X比较xml文件时忽略特定节点的特定属性

  •  2
  • Ish  · 技术社区  · 9 年前

    我有两个XML文件:

    <!------------------------File1--------------------------------->
        <note id="ignoreThisAttribute_1">
          <to>Experts</to>
          <from>Matrix</from>
          <heading id="dontIgnoreThisAttribute_1">Reminder</heading>
          <body>Help me with this problem</body>
        </note>
    
    <!------------------------File2--------------------------------->
        <note id="ignoreThisAttribute_2">
          <to>Experts</to>
          <from>Matrix</from>
          <heading id="dontIgnoreThisAttribute_2">Reminder</heading>
          <body>Help me with this problem</body>
        </note>
    

    id 节点的数量: note

    DiffBuilder :

    Diff documentDiff = DiffBuilder.compare(srcFile).withTest(destFile).build()
    

    大多数在线解决方案建议实施 DifferenceEvaluator :

    public class IgnoreAttributeDifferenceEvaluator implements DifferenceEvaluator {
            private String attributeName;
            public IgnoreAttributeDifferenceEvaluator(String attributeName) {
                this.attributeName = attributeName;
            }
    
            @Override
            public ComparisonResult evaluate(Comparison comparison, ComparisonResult outcome) {
                if (outcome == ComparisonResult.EQUAL)
                    return outcome;
                final Node controlNode = comparison.getControlDetails().getTarget();
    
    
                System.out.println(controlNode.getNodeName());
                if (controlNode instanceof Attr) {
                    Attr attr = (Attr) controlNode;
                    if (attr.getName().equals(attributeName)) {
                        return ComparisonResult.EQUAL;
                    }
                }
                return outcome;
            }
        }
    

    在我的测试类中调用方法:

    final Diff documentDiff = DiffBuilder.compare(src).withTest(dest)
    .withDifferenceEvaluator(new IgnoreAttributeDifferenceEvaluator("id"))
    .build();
    

    XMLUnit新手,请提供相应帮助。

    提前谢谢。

    1 回复  |  直到 8 年前
    推荐文章