读写xml时中文乱码是很常见的事,先总结了一个读写工具类:
package
xmlRw;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import org.dom4j.Document;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
public class RWXmlByDom4j {
/**
* 读XML文件
* @param filePath 文件路径
* @param encoding 文件编码
* @return Document
*/
public static Document readXml(String filePath,String encoding){
try {
SAXReader saxReader = new SAXReader();
FileInputStream file = new FileInputStream(filePath);
InputStreamReader reader = new InputStreamReader(file,encoding);
Document document = saxReader.read(reader);
return document;
} catch (Exception e){
e.printStackTrace();
return null ;
}
}
/**
* 将Document 写入文件
* @param doc Document
* @param filePath 写入文件的路径
* @param encoding 文件编码
* @return 成功与否
*/
public static boolean writeXml(Document doc ,String filePath,String encoding){
try {
/** 格式化输出,类型IE浏览一样 */
OutputFormat format = OutputFormat.createPrettyPrint();
/** 指定XML编码 */
format.setEncoding(encoding);
// 进行文件编码设置
FileOutputStream fos = new FileOutputStream( new File(filePath));
OutputStreamWriter osw = new OutputStreamWriter(fos,encoding);
XMLWriter writer = new XMLWriter(osw, format);
writer.write(doc);
writer.close();
return true ;
} catch (Exception ex) {
ex.printStackTrace();
return false ;
}
}
}
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import org.dom4j.Document;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
public class RWXmlByDom4j {
/**
* 读XML文件
* @param filePath 文件路径
* @param encoding 文件编码
* @return Document
*/
public static Document readXml(String filePath,String encoding){
try {
SAXReader saxReader = new SAXReader();
FileInputStream file = new FileInputStream(filePath);
InputStreamReader reader = new InputStreamReader(file,encoding);
Document document = saxReader.read(reader);
return document;
} catch (Exception e){
e.printStackTrace();
return null ;
}
}
/**
* 将Document 写入文件
* @param doc Document
* @param filePath 写入文件的路径
* @param encoding 文件编码
* @return 成功与否
*/
public static boolean writeXml(Document doc ,String filePath,String encoding){
try {
/** 格式化输出,类型IE浏览一样 */
OutputFormat format = OutputFormat.createPrettyPrint();
/** 指定XML编码 */
format.setEncoding(encoding);
// 进行文件编码设置
FileOutputStream fos = new FileOutputStream( new File(filePath));
OutputStreamWriter osw = new OutputStreamWriter(fos,encoding);
XMLWriter writer = new XMLWriter(osw, format);
writer.write(doc);
writer.close();
return true ;
} catch (Exception ex) {
ex.printStackTrace();
return false ;
}
}
}