虽然文件设置为UTF-8,但是由于有中文,读取文件时产生乱码,这时需要在读取文件的流设置为UTF-8的形式,需加入如下代码:

   InputStream ifile = new FileInputStream("base.xml"); 
   InputStreamReader ir = new InputStreamReader(ifile, "UTF-8");    

下面以dom4j生成xml文件,和xml文件转换为java对象,做详细说明:

 

  1. import java.io.File;  
  2. import java.io.FileInputStream;  
  3. import java.io.FileNotFoundException;  
  4. import java.io.FileOutputStream;  
  5. import java.io.FileWriter;  
  6. import java.io.IOException;  
  7. import java.io.InputStream;  
  8. import java.io.InputStreamReader;  
  9.  
  10. import org.dom4j.Document;  
  11. import org.dom4j.DocumentException;  
  12. import org.dom4j.DocumentHelper;  
  13. import org.dom4j.Element;  
  14. import org.dom4j.io.OutputFormat;  
  15. import org.dom4j.io.SAXReader;  
  16. import org.dom4j.io.XMLWriter;  
  17.  
  18. import com.bx.vo.Cpe;  
  19. /**  
  20.  * 操作base.xml文件  
  21.  * @author Administrator  
  22.  *  
  23.  */  
  24. public class CpeXmlUtil {  
  25.  
  26.     //将传过来的对象转换成xml文件  
  27.     public boolean getXml(Cpe cpe){  
  28.         boolean isOk = false;  
  29.         Document doc = DocumentHelper.createDocument();  
  30.         Element cpeElement = doc.addElement("cpe");  
  31.         Element IpElement = cpeElement.addElement("ip");  
  32.         IpElement.addText(cpe.getIp());  
  33.         Element trPortElement = cpeElement.addElement("trport");  
  34.         trPortElement.addText(cpe.getTrPort());  
  35.         Element tcPortElement = cpeElement.addElement("tcport");  
  36.         tcPortElement.addText(cpe.getTcPort());  
  37.         Element cidElement = cpeElement.addElement("cid");  
  38.         cidElement.addText(cpe.getCid());  
  39.         Element pwdElement = cpeElement.addElement("pwd");  
  40.         pwdElement.addText(cpe.getPwd());  
  41.         try {  
  42.             File file = new File("base.xml");  
  43.             OutputFormat format = OutputFormat.createPrettyPrint();  
  44.             format.setEncoding("UTF-8");            //生成文件时,设置格式为UTF-8  
  45.             FileOutputStream fos = null;  
  46.             try {  
  47.                 fos = new FileOutputStream(file);  
  48.             } catch (FileNotFoundException e) {  
  49.                 e.printStackTrace();  
  50.             }  
  51.             XMLWriter writer = new XMLWriter(fos,format);  
  52.             writer.write(doc);  
  53.             writer.close();  
  54.             isOk = true;  
  55.         } catch (IOException e) {  
  56.             e.printStackTrace();  
  57.         }  
  58.         return isOk;  
  59.     }  
  60.       
  61.     //从xml文件中获取Cpe对象  
  62.     public Cpe getCpe(){  
  63.         SAXReader reader = new SAXReader();  
  64.         Document doc = DocumentHelper.createDocument();  
  65.         try{  
  66.             InputStream ifile = new FileInputStream("base.xml");    
  67.             InputStreamReader ir = new InputStreamReader(ifile, "UTF-8");     //读取文件时,设置格式为UTF-8  
  68.             doc = reader.read(ir);  
  69.         }catch(Exception e){  
  70.               
  71.         }  
  72.         Element ipElement = (Element) doc.selectNodes("//cpe//ip").get(0);  
  73.         Element trPortElement = (Element) doc.selectNodes("//cpe//trport").get(0);  
  74.         Element tcPortElement = (Element) doc.selectNodes("//cpe//tcport").get(0);  
  75.         Element cidElement = (Element) doc.selectNodes("//cpe//cid").get(0);  
  76.         Element pwdElement = (Element) doc.selectNodes("//cpe//pwd").get(0);  
  77.         Cpe cpe = new Cpe();  
  78.         cpe.setIp(ipElement.getText());  
  79.         cpe.setTrPort(trPortElement.getText());  
  80.         cpe.setTcPort(tcPortElement.getText());  
  81.         cpe.setCid(cidElement.getText());  
  82.         cpe.setPwd(pwdElement.getText());  
  83.         return cpe;  
  84.           
  85.     }  
  86.       
  87.     public static void main(String args[]){  
  88.         //模拟CPE对象  
  89.         Cpe cpe = new Cpe();  
  90.         cpe.setCid("2233441007");  
  91.         cpe.setIp("127.0.0.1");  
  92.         cpe.setPwd("123456");  
  93.         cpe.setTcPort("7547");  
  94.         cpe.setTrPort("搜狗");  
  95.         new CpeXmlUtil().getXml(cpe);     
  96.         CpeXmlUtil cxpnew CpeXmlUtil();  
  97.         cxp.getXml(cpe);  
  98.     }  
  99. }