2016-09-26 97 views
1

我想在一个Junit测试中比较两个XML。 我使用XMLUnit进行xml的比较。请告诉我是否有任何简单的方法可以忽略xml中correlation-id的比较。在编辑XML时忽略某些元素XMLUnit

XML1:

<?xml version="1.0" encoding="UTF-8"?> 
<response> 
<bih-metadata> 
<result>Error</result> 
<correlation-id>ID:925977d0-83cd-11e6-b94d-c135e6c73218</correlation-id> 
<error-message>SAXParseException: The entity name must immediately follow the '&amp;' in the entity reference.</error-message> 
</bih-metadata> 
</response> 

XML2:

<?xml version="1.0" encoding="UTF-8"?> 
<response> 
<bih-metadata> 
<result>Error</result> 
<correlation-id>ID:134345d0-83cd-11e6-b94d-c135e6c73218</correlation-id> 
<error-message>SAXParseException: The entity name must immediately follow the '&amp;' in the entity reference.</error-message> 
</bih-metadata> 
</response> 
+1

你能不能也请添加您的样本码? –

回答

0

这是NodeFilter已XMLUnit测试2.x中添加了:

import org.w3c.dom.Element; 
import org.xmlunit.builder.DiffBuilder; 
import org.xmlunit.util.Nodes; 
import org.xmlunit.diff.*; 

public class Test { 

    public static void main(String[] args) { 
     Diff d = DiffBuilder.compare("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + 
            "<response>\n" + 
            "<bih-metadata>\n" + 
            "<result>Error</result>\n" + 
            "<correlation-id>ID:925977d0-83cd-11e6-b94d-c135e6c73218</correlation-id>\n" + 
            "<error-message>SAXParseException: The entity name must immediately follow the '&amp;' in the entity reference.</error-message>\n" + 
            "</bih-metadata>\n" + 
            "</response>") 
      .withTest("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + 
         "<response>\n" + 
         "<bih-metadata>\n" + 
         "<result>Error</result>\n" + 
         "<correlation-id>ID:134345d0-83cd-11e6-b94d-c135e6c73218</correlation-id>\n" + 
         "<error-message>SAXParseException: The entity name must immediately follow the '&amp;' in the entity reference.</error-message>\n" + 
         "</bih-metadata>\n" + 
         "</response>") 
      .withNodeFilter(n -> !(n instanceof Element && "correlation-id".equals(Nodes.getQName(n).getLocalPart()))) 
      .build(); 
     System.err.println("Different? " + d.hasDifferences()); 
    } 
}