XML : How to compare and get difference between two xml files using java?

I have two xml files as below. Compare.xml

  <?xml version="1.0"?>  <class>  <student rollno="393">    <firstname>dinkar</firstname>    <lastname>kad</lastname>    <nickname>dinkar</nickname>    <marks>85</marks>  </student>  <student rollno="493">    <firstname>Vaneet</firstname>    <lastname>Gupta</lastname>    <nickname>vinni</nickname>    <marks>95</marks>  </student>  </class>    

Reference.xml

  <?xml version="1.0"?>  <class>  <student rollno="393">    <firstname>ila</firstname>    <lastname>kad</lastname>    <nickname>dinkar</nickname>    <marks>85</marks>  </student>  <student rollno="493">    <firstname>Vaneet</firstname>    <lastname>Gupta</lastname>    <nickname>vinni</nickname>    <marks>95</marks>  </student>  </class>    Now I need to compare and get the difference between these two xml     files.also i need the output to be exported as a Log file.    below my code:  package DomParserDemo;  import java.io.File;  import java.util.logging.FileHandler;  import java.util.logging.Logger;    import javax.xml.parsers.DocumentBuilderFactory;  import javax.xml.parsers.DocumentBuilder;    import org.w3c.dom.Document;  import org.w3c.dom.NodeList;  import org.w3c.dom.Node;  import org.w3c.dom.Element;    public class DomParserDemo {  public static void main(String[] args){      try {        File inputFile = new File("input.txt");       DocumentBuilderFactory dbFactory           = DocumentBuilderFactory.newInstance();       DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();       Document doc = dBuilder.parse(inputFile);       doc.getDocumentElement().normalize();       System.out.println("Root element :"           + doc.getDocumentElement().getNodeName());       NodeList nList = doc.getElementsByTagName("student");       System.out.println("----------------------------");       for (int temp = 0; temp < nList.getLength(); temp++) {          Node nNode = nList.item(temp);          System.out.println("\nCurrent Element :"              + nNode.getNodeName());          if (nNode.getNodeType() == Node.ELEMENT_NODE) {             Element eElement = (Element) nNode;             System.out.println("Student roll no : "                 + eElement.getAttribute("rollno"));             System.out.println("First Name : "                 + eElement                .getElementsByTagName("firstname")                .item(0)                .getTextContent());             System.out.println("Last Name : "              + eElement                .getElementsByTagName("lastname")                .item(0)                .getTextContent());             System.out.println("Nick Name : "              + eElement                .getElementsByTagName("nickname")                .item(0)                .getTextContent());             System.out.println("Marks : "              + eElement                .getElementsByTagName("marks")                .item(0)                .getTextContent());          }       }         FileHandler handler = new FileHandler("logfile.log");         // Add to the desired logger       Logger logger = Logger.getLogger("");       logger.addHandler(handler);       System.out.println("Log Generated Successfully...!!!");        } catch (Exception e) {        System.out.println("Log Generation Failed..!!!");       e.printStackTrace();    }  }    }    

Now I can see the xml files in out put with out tags and i need its difference and the output should be exported as a log file.

Kindly help me to finish this and thanks in advance.

No comments:

Post a Comment