【问题标题】:Find missing elements using XMLUnit使用 XMLUnit 查找缺失的元素
【发布时间】:2012-04-26 15:20:37
【问题描述】:


我有以下 testXML

<root>
   <a>test</a>
   <b>bee</b>
   <d/>
</root>

虽然 templateXML 看起来像这样

<root>
  <a/>
  <b/>
  <c/>
  <d>
    <e/>
  </d>
</root>

我希望 XMLUnit 返回缺失的元素,在这种情况下,'c' 和 'e' 缺失

/root[1]/c[1] 丢失
/root[1]/d[1]/e[1] 不见了

我的代码是这样的

public static ArrayList<Difference> testCompareToSkeletonXML(String xml, String template) throws Exception {

    XMLUnit.setCompareUnmatched(false);
    XMLUnit.setIgnoreAttributeOrder(true);
    XMLUnit.setIgnoreComments(true);
    XMLUnit.setIgnoreWhitespace(true);
    XMLUnit.setIgnoreDiffBetweenTextAndCDATA(true);     

    DifferenceListener myDifferenceListener = new IgnoreTextAndAttributeValuesDifferenceListener();
    DetailedDiff myDiff = new DetailedDiff(new Diff(template, xml));
   // myDiff.overrideDifferenceListener(myDifferenceListener);
    myDiff.overrideElementQualifier(new RecursiveElementNameAndTextQualifier());
    ArrayList<Difference> returnList = new ArrayList<Difference>();
    List<Object> allDifferences = myDiff.getAllDifferences();
    for(Object obj: allDifferences){
        Difference dif = (Difference) obj;          
        if(dif.getTestNodeDetail().getNode()== null){
            //returnList.add(dif);          
            System.out.println(dif.getControlNodeDetail().getXpathLocation());
        }   
    }
    return returnList;
}

生成的输出如下所示

/root[1]/a[1]
/root[1]/b[1]
/root[1]/c[1]
/root[1]/d[1]

感谢您的帮助
--SD

【问题讨论】:

  • 这是个问题,我希望 XMLUnit 返回缺失的元素,在这种情况下,'c' 和 'e' 缺失 /root[1]/c[1] 缺失 /root[1 ]/d[1]/e[1] 不见了

标签: recursion xmlunit


【解决方案1】:

您告诉 XMLUnit 仅当元素名称和嵌套文本相同时才相互匹配元素。您的 ab 元素并非如此(它们在嵌套文本中有所不同),这就是您在列表中看到它们的原因。

你看到d而不是嵌套的e,因为顶层ds根据RecursiveElementNameAndTextQualifier的规则是不同的。如果您删除设置RecursiveElementNameAndTextQualifier 的行,您的列表将减少到

/root[1]/c[1]
/root[1]/d[1]/e[1]

这是你所期待的。

【讨论】:

    猜你喜欢
    • 2011-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-20
    • 2022-01-05
    • 2018-09-26
    • 1970-01-01
    相关资源
    最近更新 更多