两个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(); } }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值