当前位置:编程学习 > XML/UML >>

两个XML文件进行对比

[html]
package com.xml; 
 
public class XMLParseTest  

 
    public static void main(String args[]) 
    { 
        String sourcePath = "c:/web.xml"; 
        String targetPath = "c:/web1.xml"; 
         
        IXMLCompare xmlCompare = new XMLCompare(); 
        xmlCompare.compare(sourcePath, targetPath); 
    } 

[html] view plaincopy
package com.xml; 
 
 
public interface IXMLCompare  

<span style="white-space:pre">    </span>void compare(String sourcePath,String targetPath); 

[html]
package com.xml; 
 
import java.io.File; 
import java.io.IOException; 
import java.util.HashMap; 
import java.util.Map; 
 
import javax.xml.parsers.DocumentBuilder; 
import javax.xml.parsers.DocumentBuilderFactory; 
import javax.xml.parsers.ParserConfigurationException; 
 
import org.w3c.dom.Document; 
import org.w3c.dom.NodeList; 
import org.xml.sax.SAXException; 
 
public class XMLCompare implements IXMLCompare 

    private DocumentBuilderFactory factory;  
    private DocumentBuilder builder; 
     
    public XMLCompare() 
    { 
        factory = DocumentBuilderFactory.newInstance(); 
        try { 
            builder = factory.newDocumentBuilder(); 
        } catch (ParserConfigurationException e) { 
            e.printStackTrace(); 
        } 
    } 
     
    @Override 
    public void compare(String sourcePath, String targetPath) { 
        File sourceFile = new File(sourcePath); 
        File targetFile = new File(targetPath); 
         
        try { 
            Document sourceDoc = builder.parse(sourceFile); 
            Document targetDoc = builder.parse(targetFile); 
            Map<Integer,String> result = executeCompare(sourceDoc,targetDoc); 
            if(result.isEmpty()) 
            { 
                System.out.println("两个XML文件内容相同!"); 
            } 
            else 
            { 
                System.out.println("两个XML文件的内容不同!"); 
                for(Integer element: result.keySet()) 
                { 
                    System.out.println("number"+element+":"+result.get(element)); 
                } 
            } 
        } catch (SAXException e) { 
            e.printStackTrace(); 
        } catch (IOException e) { 
            e.printStackTrace(); 
        } 
         
    } 
 
    private Map<Integer,String> executeCompare(Document sourceDoc, Document targetDoc) { 
        //该标签用于限定范围www.zzzyk.com 
        String topTag = "web-app";   
        Map<Integer,String> resultMap = new HashMap<Integer,String>(); 
        NodeList sourceList = sourceDoc.getElementsByTagName(topTag); 
        NodeList targetList = targetDoc.getElementsByTagName(topTag); 
        String sourceEleValue; 
        String targetEleValue; 
        if(sourceList.getLength()!=targetList.getLength()) 
        { 
            System.out.println("这两个XML对比的内容长度不同!"); 
        } 
        else 
        { 
            for(int i=0;i<sourceList.getLength();i++) 
            { 
                sourceEleValue =  getElementValue(sourceDoc,"param-name",i); 
                targetEleValue =  getElementValue(targetDoc,"param-name",i); 
                if(!sourceEleValue.equals(targetEleValue)) 
                { 
                    resultMap.put(new Integer(i),"源文件当前值为:" 
                            +sourceEleValue 
                            +"--目标文件当前值为:" 
补充:Web开发 , 其他 ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,