两个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 inte易做图ce 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开发 , 其他 ,