2016-09-26 2 views
1

Junit 테스트 중 하나에서 XML 두 개를 비교하고 싶습니다. xml 비교를 위해 XMLUnit을 사용하고 있습니다. 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()); 
    } 
} 
관련 문제