有时XML的某些内容是待定的,对于这些内容可以在XML文件中使用占位符

 
  
  1. <people> 
  2.  <person id="001"> 
  3.   <name>$name</name> 
  4.   <age>$age</age> 
  5.  </person> 
  6. </people> 

读取该文件的时候可以为其中的占位符设置值

 
  
  1. /**  
  2.  * IO操作工具类  
  3.  *   
  4.  * @author 徐越  
  5.  *   
  6.  */ 
  7. public class IOUtils  
  8. {  
  9.     /**  
  10.      * 读取输入流为byte[]数组  
  11.      */ 
  12.     public static byte[] read(InputStream instream) throws IOException  
  13.     {  
  14.         ByteArrayOutputStream bos = new ByteArrayOutputStream();  
  15.         byte[] buffer = new byte[1024];  
  16.         int len = 0;  
  17.         while ((len = instream.read(buffer)) != -1)  
  18.         {  
  19.             bos.write(buffer, 0, len);  
  20.         }  
  21.         return bos.toByteArray();  
  22.     }  
  23. }  
  24.  
  25. InputStream instream = this.getClass().getClassLoader().getResourceAsStream("person.xml");  
  26. String oldXML = new String(IOUtils.read(instream), "UTF-8");  
  27. String newXML = oldXML.replaceAll("\\$name""徐越").replaceAll("\\$age","22"); 

要说明的是replaceAll第一个参数是正则表达式,正则表达式中$需要用\转义。

Java中对\又需要用\进行转义,所以写成\\$name 。