xml解析中,通常大家读文件,解析的时候没有问题,但是在写文件的时候常常会碰到乱码等问题,就我的个人体会是一般只要在写文件的时候采用文件流的形式,设置好当前的编码方式,通常就会避免此类问题的发生!下面有两个简单的分别是采用jdom和dom4j实现的例子:
1、dom4j
package org.lyj.xml;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import org.dom4j.Document;
import org.dom4j.Element;
import java.io.FileWriter;
import org.dom4j.io.OutputFormat;
import org.dom4j.Namespace;
import org.dom4j.io.XMLWriter;
import java.io.File;
import java.io.IOException;
import org.dom4j.DocumentHelper;
/**
* <p>Title: </p>
*
* <p>Description: </p>
*
* <p>Copyright: Copyright (c) 2005</p>
*
* <p>Company: </p>
*
* @author not attributable
* @version 1.0
*/
public class Dom4jTest {
public void generateDocument() {
org.dom4j.DocumentFactory df = new org.dom4j.DocumentFactory();
Document document = df.createDocument();//.createDocument();
Element catalogElement = document.addElement("catalog");
catalogElement.addComment("An XML Catalog");
catalogElement.addProcessingInstruction("target", "text");
Element journalElement = catalogElement.addElement("journal");
journalElement.addAttribute("title", "XML Zone");
journalElement.addAttribute("publisher", "IBM developerWorks");
Element articleElement = journalElement.addElement("article");
articleElement.addAttribute("level", "Intermediate");
articleElement.addAttribute("date", "December-2001");
Element titleElement = articleElement.addElement("title");
titleElement.setText("Java configuration with XML Schema");
Element authorElement = articleElement.addElement("author");
Element firstNameElement = authorElement.addElement("录音机");
firstNameElement.setText("Marcello");
Element lastNameElement = authorElement.addElement("刘");
lastNameElement.setText("Vitaletti");
document.addDocType("catalog",
null, "file://c:/Dtds/catalog.dtd");
document.setXMLEncoding("gb2312");
try {
OutputFormat of = OutputFormat.createCompactFormat();
of.setEncoding("gb2312");
XMLWriter output = new XMLWriter(
new java.io.FileOutputStream(new File("c:/catalog/catalog.xml")),of);
output.write(document);
output.close();
} catch (IOException e) {
System.out.println(e.getMessage());
}
}
public static void main(String[] argv) {
Dom4jTest dom4j = new Dom4jTest();
dom4j.generateDocument();
}
}
2、jdom
package org.lyj.xml;
import org.jdom.output.Format;
import org.jdom.Document;
import java.io.IOException;
import org.jdom.input.SAXBuilder;
import org.jdom.output.XMLOutputter;
import org.jdom.JDOMException;
/**
* <p>Title: </p>
*
* <p>Description: </p>
*
* <p>Copyright: Copyright (c) 2005</p>
*
* <p>Company: </p>
*
* @author not attributable
* @version 1.0
*/
public class JdomWriter {
public JdomWriter() {
}
public void write(){
try {
SAXBuilder builder = new SAXBuilder();
Document doc = builder.build("aa.xml");
XMLOutputter outputter = new XMLOutputter(Format.getPrettyFormat()。setEncoding("utf-8"));
outputter.output(doc, new java.io.FileOutputStream("bb.xml"));
} catch (JDOMException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String args[]){
JdomWriter jd = new JdomWriter();
jd.write();
}
}
重要提醒!!内容中联系方式并非本站联系方式,报名咨询的学员请与下面最新联系方式联系我们咨询报名-以免损失!
>>长期招聘兼职招生代理人员,项目合作,团报优惠咨询,有意者请联系我们 >>咨询:13312524700(可加微信)。
楚雄学习中心:◆咨询电话:0878-3138907、17787826253 冯老师、 王老师(微信报名:17787826253 )
总部报名地址: ◆云南省昆明市人民中路216号丰园大厦25楼2511;网课试听:ke.xuekaocn.cn
地州分校: 大理分校 丽江分校 迪庆分校 怒江分校 红河分校 临沧分校 玉溪分校 文山分校 保山分校 德宏分校 昭通分校 普洱分校 版纳分校 【各地州学员请加老师微信咨询报名,电话(微信):133-1252-4700】;【2021年云南省成人高考>>立即报名】
职业技能考证:心理咨询师、健康管理师、茶艺师等更多>◆咨询电话:0871-65385238、13312524700(微信)
公考培训咨询:◆国考云南省考公务员/事业单位面授培训,咨询电话:0871-65385238,13312524700 (微信)