• 两个XML文件进行对比


    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);
    	}
    }
    
    package com.xml;
    
    
    public interface IXMLCompare 
    {
    	void compare(String sourcePath,String targetPath);
    }
    

    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) {
    		//该标签用于限定范围
    		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
    							+"--目标文件当前值为:"
    							+targetEleValue);
    				}
    			}
    		}
    		return resultMap;
    	}	
    	
    	
    	private String getElementValue(Document doc,String tagName,int index)
    	{
    		return doc.getElementsByTagName(tagName).item(index).getFirstChild().getNodeValue().trim();
    	}
    }
    
    
    
    
    
    
    
    
    
    
    
    


  • 相关阅读:
    python sys.path.append
    python中的map()函数
    python中的map、filter、reduce函数
    上传文件2.0--drp203
    The import org.apache.commons.fileupload cannot be resolved
    让我会好好学习一阵子的东西
    【JSP】--Error错误页设置,声明式异常--188 drp
    【JSP】--重定向,转发--186 drp
    【JSP】--路径问题--如何去掉../,直接写绝对路径
    主备切换,双机热备,负载均衡,nginx
  • 原文地址:https://www.cnblogs.com/mengjianzhou/p/5986862.html
Copyright © 2020-2023  润新知