• 替换xml中某些特定的elements


    替换xml中某些node, 如<name>zhangsan</name>想替换成<name>lisi</name>:

    package strip;
    
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.util.Properties;
    
    public class StripXMLElements {
    
        public static void main(String[] args) {
            String oldfilename = args[0];
            String newfilename = args[1];
            String propertyfile = args[2];
    
            Properties prop = new Properties();
            try {
                FileInputStream fis = new FileInputStream(propertyfile);
                prop.load(fis);
                String elements = prop.getProperty("STRIP_ELEMENTS");
    
                if ((elements != null) && (!elements.equals(""))) {
                    stripElements(oldfilename, elements, newfilename);
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        public static void stripElements(String oldFile, String stripElements,
                String newFile) throws IOException {
    
            String start = null;
            String end = null;
            int startIndex;
            int endIndex;
            String line = null;
            BufferedReader br = null;
            FileReader fr = null;
            FileWriter fw = null;
            BufferedWriter bw = null;
            String[] strs = stripElements.split(";");
    
            File file = new File(oldFile);
            try {
                fr = new FileReader(file);
                br = new BufferedReader(fr);
            } catch (FileNotFoundException e1) {
                e1.printStackTrace();
            }
    
            if (!file.exists()) {
                try {
                    throw new FileNotFoundException();
                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                }
            } else {
                fw = new FileWriter(newFile, true);
                bw = new BufferedWriter(fw);
                while ((line = br.readLine()) != null) {
                    for (String str : strs) {
                        start = "<" + str + ">";
                        end = "</" + str + ">";
                        if (line.contains(start) && line.contains(end)) {
                            startIndex = line.indexOf(start) + start.length();
                            endIndex = line.indexOf(end);
                            line = line
                                    .replace(line.substring(startIndex, endIndex),
                                            "STRIPED");
                            bw.write(line);
                            bw.newLine();
                            bw.flush();
                            line = br.readLine();
                            for (String s : strs) {
                                String starts = "<" + s + ">";
                                String ends = "</" + s + ">";
                                if (line.contains(starts) && line.contains(ends)) {
                                    int startIndexs = line.indexOf(starts)
                                            + start.length();
                                    int endIndexs = line.indexOf(ends);
                                    line = line.replace(
                                            line.substring(startIndexs, endIndexs),
                                            "STRIPED");
                                }
                            }
                            break;
                        }
                    }
    
                    bw.write(line);
                    bw.newLine();
                    bw.flush();
                }
            }
            bw.flush();
            bw.close();
            br.close();
            fw.close();
            fr.close();
    
        }
    }


    没有使用dom4j,JDOM等,使用的是流编辑。

  • 相关阅读:
    C# bool? 逻辑运算
    C# yield return 用法与解析
    枚举器和迭代器
    C# 事件
    C# 索引器
    C# 实现单例模式的几种方法
    协变 和 逆变
    C# 结构体的特点
    装箱 和 拆箱
    继承之---对象用父类声明,用子类实例化
  • 原文地址:https://www.cnblogs.com/QAZLIU/p/4890914.html
Copyright © 2020-2023  润新知