使用dom4j解析xml文件
JAVA:使⽤dom4j的XMLWriter写Xml⽂件时出现乱码问题问题:
按平常的⽅法,使⽤dom4j的XMLWriter写Xml⽂件时出现了乱码问题
public static boolean xmlWrite(String vpath, String node, String value) {
SAXReader saxReader = new SAXReader();
Document doc;
try {
doc = ad(new File(vpath));// 加载xml⽂件
Element boot = RootElement();// 获取根节点
Element el = getXmlElement(boot, node);
el.setText(value);
OutputFormat format = atePrettyPrint();
format.setEncoding("utf-8");  //按⽰例的做法使⽤了FileWriter
XMLWriter xmlWriter = new XMLWriter(new FileWriter(vpath), format);
xmlWriter.write(doc);
xmlWriter.close();
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
写⼊Xml后⽂件出现中⽂乱码问题。
原因:
因为FileWriter⽆法处理编码,虽然代码中使⽤format.setEncoding("utf-8"),但只是把⽂件头指定为utf-8,写⼊的时候没有真正转码。只有使⽤OutputStream类的⽅法(此处使⽤继承类FileOutputStream)才能转码指定的编码。
解决⽅案:
将new XMLWriter(new FileWriter(vpath), format)中的FileWriter改为FileOutputStream
修改后的代码如下:
public static boolean xmlWrite(String vpath, String node, String value) {
SAXReader saxReader = new SAXReader();
Document doc;
try {
doc = ad(new File(vpath));// 加载xml⽂件
Element boot = RootElement();// 获取根节点
Element el = getXmlElement(boot, node);
el.setText(value);
OutputFormat format = atePrettyPrint();
format.setEncoding("utf-8");  //FileWriter改为FileOutputStream解决乱码问题
XMLWriter xmlWriter = new XMLWriter(new FileOutputStream(vpath), format);
xmlWriter.write(doc);
xmlWriter.close();
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
运⾏后,写⼊的⽂件正常了。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。