zoukankan      html  css  js  c++  java
  • 替换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等,使用的是流编辑。

  • 相关阅读:
    rs
    stm32f767 usoc3
    stm32f767 RTT 日志
    stm32f767 标准库 工程模板
    stm32f767 HAL 工程模板
    docker tab 补全 linux tab 补全
    docker anconda 依赖 下载 不了
    docker run 常用 指令
    linux scp 命令
    Dockerfile 常用参数说明
  • 原文地址:https://www.cnblogs.com/QAZLIU/p/4890914.html
Copyright © 2011-2022 走看看