忽略使用xmlunit在一个xml文件中注释掉的元素

时间:2014-03-24 13:10:39

标签: java xml dom xmlunit

我想比较两个XML文件。我正在使用XMLUnit进行比较。我在比较下面的xml片段时遇到了一些问题。

预期:

<Detail>
    <Participant>
        <PersonalInfo>
        <SSN>405018111</SSN>
        <!--<Title>MR</Title>-->
    </PersonalInfo>
    <!--<PersonalDemo>
        <Email>someemail@email.com</Email>
        <EDeliveryFlag>true</EDeliveryFlag>
    </PersonalDemo>-->
</Detail>

ACTUAL:

<Detail>
    <Participant>
        <PersonalInfo>
        <SSN>405018111</SSN>
        <Title>MR</Title>
    </PersonalInfo>
    <PersonalDemo>
        <Email>someemail@email.com</Email>
        <EDeliveryFlag>false</EDeliveryFlag>
    </PersonalDemo>
</Detail>
  1. 它会失败,因为在“实际”中存在“标题”标签(因为它被注释掉了),而它存在于实际中
  2. 它会失败,因为当它出现在ACTUAL中时,“PersonalDemo”标签在EXPECTED中缺失(因为它被注释掉了)
  3. 它会失败,因为“PPSDetails”在EXPECTED和ACTUAL中有不同数量的子节点(因为没有考虑注释掉的节点)
  4. 我真正需要的是我想忽略那些在EXPECTED中注释掉的ACTUAL中的元素

    任何帮助,请

1 个答案:

答案 0 :(得分:0)

我建议您必须编写自己的XML解析器,以便能够看到要忽略的标记。在此任务中,您只需从预期和实际XML中删除忽略的标记,并匹配其他标记以进行验证或比较。

我认为你有两个选择,要么在两个解析器之间使用其中一个:

DOM parser
SAX PArser

我知道这不是最好的解决方案,所以也欢迎其他想法......

修改

我相信您需要在XMLUint上编写包装器。在删除被忽略的标签(Wrapper任务)后将采用XML输入,其余功能相同。