替换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等,使用的是流编辑。