虽然文件设置为UTF-8,但是由于有中文,读取文件时产生乱码,这时需要在读取文件的流设置为UTF-8的形式,需加入如下代码:
InputStream ifile = new FileInputStream("base.xml");
InputStreamReader ir = new InputStreamReader(ifile, "UTF-8");
下面以dom4j生成xml文件,和xml文件转换为java对象,做详细说明:
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileNotFoundException;
- import java.io.FileOutputStream;
- import java.io.FileWriter;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.InputStreamReader;
- import org.dom4j.Document;
- import org.dom4j.DocumentException;
- import org.dom4j.DocumentHelper;
- import org.dom4j.Element;
- import org.dom4j.io.OutputFormat;
- import org.dom4j.io.SAXReader;
- import org.dom4j.io.XMLWriter;
- import com.bx.vo.Cpe;
- /**
- * 操作base.xml文件
- * @author Administrator
- *
- */
- public class CpeXmlUtil {
- //将传过来的对象转换成xml文件
- public boolean getXml(Cpe cpe){
- boolean isOk = false;
- Document doc = DocumentHelper.createDocument();
- Element cpeElement = doc.addElement("cpe");
- Element IpElement = cpeElement.addElement("ip");
- IpElement.addText(cpe.getIp());
- Element trPortElement = cpeElement.addElement("trport");
- trPortElement.addText(cpe.getTrPort());
- Element tcPortElement = cpeElement.addElement("tcport");
- tcPortElement.addText(cpe.getTcPort());
- Element cidElement = cpeElement.addElement("cid");
- cidElement.addText(cpe.getCid());
- Element pwdElement = cpeElement.addElement("pwd");
- pwdElement.addText(cpe.getPwd());
- try {
- File file = new File("base.xml");
- OutputFormat format = OutputFormat.createPrettyPrint();
- format.setEncoding("UTF-8"); //生成文件时,设置格式为UTF-8
- FileOutputStream fos = null;
- try {
- fos = new FileOutputStream(file);
- } catch (FileNotFoundException e) {
- e.printStackTrace();
- }
- XMLWriter writer = new XMLWriter(fos,format);
- writer.write(doc);
- writer.close();
- isOk = true;
- } catch (IOException e) {
- e.printStackTrace();
- }
- return isOk;
- }
- //从xml文件中获取Cpe对象
- public Cpe getCpe(){
- SAXReader reader = new SAXReader();
- Document doc = DocumentHelper.createDocument();
- try{
- InputStream ifile = new FileInputStream("base.xml");
- InputStreamReader ir = new InputStreamReader(ifile, "UTF-8"); //读取文件时,设置格式为UTF-8
- doc = reader.read(ir);
- }catch(Exception e){
- }
- Element ipElement = (Element) doc.selectNodes("//cpe//ip").get(0);
- Element trPortElement = (Element) doc.selectNodes("//cpe//trport").get(0);
- Element tcPortElement = (Element) doc.selectNodes("//cpe//tcport").get(0);
- Element cidElement = (Element) doc.selectNodes("//cpe//cid").get(0);
- Element pwdElement = (Element) doc.selectNodes("//cpe//pwd").get(0);
- Cpe cpe = new Cpe();
- cpe.setIp(ipElement.getText());
- cpe.setTrPort(trPortElement.getText());
- cpe.setTcPort(tcPortElement.getText());
- cpe.setCid(cidElement.getText());
- cpe.setPwd(pwdElement.getText());
- return cpe;
- }
- public static void main(String args[]){
- //模拟CPE对象
- Cpe cpe = new Cpe();
- cpe.setCid("2233441007");
- cpe.setIp("127.0.0.1");
- cpe.setPwd("123456");
- cpe.setTcPort("7547");
- cpe.setTrPort("搜狗");
- new CpeXmlUtil().getXml(cpe);
- CpeXmlUtil cxp= new CpeXmlUtil();
- cxp.getXml(cpe);
- }
- }