2016-06-13 4 views
5

これは数日間悩まされています。私はちょうど比較することによって第2のXMLの欠けているノードであるか調べる必要があります。私はxmlunitを試しましたが、行ごとに比較するので、実際には見つからないノードが見つかりません。以下の2つのサンプルのxml: XML1:2つのxmlを比較し、Javaを使用して欠落しているノードを見つけます。

<test testcase="101"> 
    <value="1"> 
    <value="2"> 
    <value="3"> 
</test> 

XML2:値= 3が第二のコピーでそれだけで最初のノードに到達するが、それでも私はそれが欠けていない考えるが実際にあることを

<test testcase="101"> 
    <value="3"> 
    <value="2"> 
</test> 

注意。どのように私は行方不明のノード値= "1"を見つけるのですか?

+1

を働いて試してみて:http://stackoverflow.com/questions/919387/how-can-i-calculate -the-between-two-arraylists – Berger

+1

XMLの大きさはどれくらいですか? –

+0

ノード内の値も固有ですか?もしそうなら、 'Set'は' List'よりも良い選択肢かもしれません。 –

答えて

0

私はそれはあなたが値の `List`を比較したいことがあり

package WebInitalizar; 
import java.util.List; 

import org.custommonkey.xmlunit.DetailedDiff; 
import org.custommonkey.xmlunit.XMLUnit; 
import org.junit.Assert; 

public class TestXml { 

    public static void main(String[] args) throws Exception { 
     String result = "<test testcase=\"101\"><value1>10</value1></test>"; 
     // will be ok 
     assertXMLEquals("<test testcase=\"1010\"><value1>10</value1><value2>10</value2></test>", result); 
    } 

    public static void assertXMLEquals(String expectedXML, String actualXML) throws Exception { 
     XMLUnit.setIgnoreWhitespace(true); 
     XMLUnit.setIgnoreAttributeOrder(true); 

     DetailedDiff diff = new DetailedDiff(XMLUnit.compareXML(expectedXML, actualXML)); 

     List<?> allDifferences = diff.getAllDifferences(); 
     System.out.println(allDifferences); 
     Assert.assertEquals("Differences found: "+ diff.toString(), 0, allDifferences.size()); 
    } 

} 
関連する問題