分享

克隆xml节点

 三十的狼 2018-06-11
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();
}
}
}
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约