import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.io.OutputFormat; import org.dom4j.io.SAXReader; import org.dom4j.io.XMLWriter; public class TestXml { public static Map<String, String> traverseFolder2(String path, Map<String, String> m) { File file = new File(path); if (file.exists()) { File[] files = file.listFiles(); if (files.length == 0) { return null; } else { for (File file2 : files) { if (file2.isDirectory()) { traverseFolder2(file2.getAbsolutePath(), m); } else if (file2.getAbsolutePath().indexOf(".xml") != -1) { m.put(file2.getAbsolutePath().substring( file2.getAbsolutePath().lastIndexOf("\\") + 1), file2.getAbsolutePath()); } } } } else { System.out.println("文件不存在!"); } return m; } public static void main(String[] args) { String path = "E:\\mapper\\src\\main\\java\\com\\online\\weigao\\platform"; Map<String, String> map1 = traverseFolder2(path, new HashMap<String, String>()); path = "E:\\project\\weigao\\weigao\\src\\main\\java\\com\\online\\weigao\\platform"; Map<String, String> map2 = traverseFolder2(path, new HashMap<String, String>()); for (Entry<String, String> e:map1.entrySet()) { if(null == map2.get(e.getKey())) continue; SAXReader reader = new SAXReader(); try { Document document = reader.read(new File(e.getValue())); Element root = document.getRootElement(); Element deleteAll = null; Element deleteTj = null; Element updateEmpty = null; if(null != root.selectSingleNode("delete[@id=\"delete\"]")){ deleteAll = (Element) root.selectSingleNode("delete[@id=\"delete\"]").clone(); } if(null != root.selectSingleNode("delete[@id=\"deleteByEntity\"]")){ deleteTj = (Element) root.selectSingleNode("delete[@id=\"deleteByEntity\"]").clone(); } if(null != root.selectSingleNode("update[@id=\"sysUpdateByPrimaryKey\"]")){ updateEmpty = (Element) root.selectSingleNode("/mapper/update[@id=\"sysUpdateByPrimaryKey\"]").clone(); } SAXReader reader1 = new SAXReader(); Document document1 = reader1.read(new File(map2.get(e.getKey()))); if(null != document1) { Element root1 = document1.getRootElement(); if(null == root1.selectSingleNode("delete[@id=\"delete\"]")){ root1.add(deleteAll); } if(null == root1.selectSingleNode("delete[@id=\"deleteByEntity\"]")){ root1.add(deleteTj); } if(null == root1.selectSingleNode("update[@id=\"sysUpdateByPrimaryKey\"]")){ root1.add(updateEmpty); } try { FileOutputStream fos = new FileOutputStream(map2.get(e.getKey())); // 用于格式化输出 // OutputFormat of = OutputFormat.createPrettyPrint(); // 格式化输出的另一个形式,不知这两种有什么区别 // 第1个参数为格式化输出缩排字符,此处为空格,第2个参数true为换行输出,false为单行输出 OutputFormat of = new OutputFormat(" ", true); // 输出为GBK码解决在windows下某些系统下打开含有中文xml乱码的情况 of.setEncoding("UTF-8"); //of.setNewlines(true); // of.setIndent(true); XMLWriter xw = new XMLWriter(fos, of); xw.write(document1); xw.close(); } catch (IOException e1) { e1.printStackTrace(); } } } catch (DocumentException e1) { e1.printStackTrace(); } } } }
|
|