Come faccio a confrontare due file XML in XMLUnit

Voglio usare XMLUnit per confrontare due file XML.

Praticamente ogni cosa è la stessa, File1 è una copia di File2 , ma in File2 ho cambiato l’ordine di alcuni elementi in un nodo.

Sto cercando di eseguire un test in cui si confronta con questi file e restituisce un risultato di simili e non trattare questi file come diversi.

OriginaleL’autore Ahmed | 2009-11-12

2 Replies
  1. 8

    Penso che questo link può aiutarti a – http://www.ibm.com/developerworks/java/library/j-cq121906.html#N10158

    In sostanza, se il tuo “File1” come –

    <account>
     <id>3A-00</id>
     <name>acme</name>
    </account>
    

    E File2 è lo stesso, ma solo differisce in ordine di <name> e <id>

    <account>
     <name>acme</name>
     <id>3A-00</id>
    </account> 
    

    Allora si può scrivere un test come di seguito, che vi confrontare queste e ritorno simile.

    public void testIdenticalAndSimilar() throws Exception {
       String controlXML = "<account><id>3A-00</id><name>acme</name></account>";
       String testXML = "<account><name>acme</name><id>3A-00</id></account>"; 
       Diff diff = new Diff(controlXML, testXML);
       assertTrue(diff.similar());
       assertFalse(diff.identical());
    }
    

    Speranza che aiuta.

    Quando io uso una Stringa di confronto funziona bene. Ma quando uso il file non è così. Dichiaro InputSource oggetto per ogni file e quindi creare un Diff oggetto con due InputSource gli oggetti in esso contenuti. Quando uso il comando simile in questo modo si verifica un errore e dice che i file sono diversi. È questo un valido strumento di confronto?
    Quanto è grande il file XML? Potresti incollare il contenuto di questa pagina?
    Come gestire se un tag è mancante dire, per esempio, da controlXML id tag non è presente la Stringa controlXML = “<account><nome>acme< nome></account>”; String testXML = “<account><nome>acme< nome><id>3A-00</id></account>”; se ci sono più di 3 nodo figlio quindi il confronto che mostra via cavo risultato

    OriginaleL’autore Rohit Agarwal

  2. 3

    Questo dovrebbe farlo:

        //Assuming file1 and file2 are not deeply nested XML files
        DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
        DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
        Document doc1 = docBuilder.parse(file1);
        Document doc2 = docBuilder.parse(file2);
    
        //SOLUTION 1: Are the files "similar"?
        Diff diff = new Diff(doc1, doc2);
        System.out.println("Similar (true/false): " + diff.similar());
    
        //SOLUTION 2: Should you want detailed differences (especially useful for deeply nested files)
        Diff diff = new Diff(doc1, doc2);
        diff.overrideElementQualifier(new RecursiveElementNameAndTextQualifier()); 
        DetailedDiff detailedDiff = new DetailedDiff(diff); 
        System.out.println("Detailed differences: " + detailedDiff.getAllDifferences().toString());
    

    Speranza che aiuta un po’. Leggi su XMLUnit qui.

    OriginaleL’autore Rubicon

Lascia un commento