0

我有两个xml,需要比较。两个 xml 中的元素数量可能会有所不同。例如,考虑以下两个 xml:

XML1:

<Students>
                <Name Type="PG">
                    <GivenName>David</GivenName>
                    <Surname>John</Surname>
                </Name>
                <Name Type="PG">
                    <GivenName>Naveen</GivenName>
                    <Surname>S</Surname>
                </Name>
                <Telephone AreaCityCode="BLR">
                    <PhoneNumber No="+91-9643542222"/>
                </Telephone>
               <Telephone AreaCityCode="BLR">
                    <PhoneNumber No="+91-9643542258"/>
                </Telephone>
                <Email>David.JOHN@gmail.com</Email>
                <Email>Naveen.S@gmail.com</Email>
                <Address Type="PT">
                    <AddressLine>40 DICKENSON ROAD</AddressLine>
                    <AddressLine>BANGALORE 12</AddressLine>
                </Address>
                <Address Type="TP">
                    <AddressLine>DOUBLE ROAD</AddressLine>
                    <AddressLine>BANGALORE 20</AddressLine>
                </Address>
</Students>

XML2:

 <Students>
                <Name Type="PG">
                    <GivenName>David</GivenName>
                    <Surname>John</Surname>
                </Name>
                <Name Type="PG">
                    <GivenName>Naveen</GivenName>
                    <Surname>S</Surname>
                </Name>
                <Telephone AreaCityCode="BLR">
                    <PhoneNumber No="+91-9643542222"/>
                </Telephone>
               <Telephone AreaCityCode="BLR">
                    <PhoneNumber No="+91-9643542258"/>
                </Telephone>
                <Email>David.JOHN@gmail.com</Email>
                <Address Type="PT">
                    <AddressLine>40 DICKENSON ROAD</AddressLine>
                    <AddressLine>BANGALORE 12</AddressLine>
                </Address>
                <Address Type="TP">
                    <AddressLine>DOUBLE ROAD</AddressLine>
                    <AddressLine>BANGALORE 30</AddressLine>
                </Address>
</Students>

在 XML2 中,email元素的数量只有一个,但在 XML1 中它是两个。我的任务是比较元素的内容,AddressLine而不考虑元素的数量email。我写了一段代码来获取它,如下所示:

XMLUnit.setIgnoreWhitespace(true);
XMLUnit.setIgnoreAttributeOrder(true);
XMLUnit.setIgnoreComments(true);
XMLUnit.setIgnoreDiffBetweenTextAndCDATA(true); 
 DetailedDiff detailledDiff = new DetailedDiff (XMLUnit.compareXML(XML1, XML2));
    detailledDiff.overrideElementQualifier(new ElementNameAndTextQualifier());
    List<Difference> list = detailledDiff.getAllDifferences();
    for (Difference difference : list) {
        if(difference.getTestNodeDetail().getXpathLocation() == null)
            System.out.println("control: "+difference.getControlNodeDetail().getXpathLocation());
        if(difference.getControlNodeDetail().getXpathLocation() == null)
            System.out.println("test: "+difference.getTestNodeDetail().getXpathLocation());
    }

即使 有变化AddressLine,它也不会打印addressLineXPath。请帮我解决这个问题。提前致谢

4

1 回答 1

0

我猜你的一个文件中可能有太多的空格(空格、换行符等)。要忽略空格,请在测试器的开头添加以下行:

    XMLUnit.setIgnoreWhitespace(true);
于 2016-01-03T10:11:01.597 回答