JAVA技能等级考试(2)-XML乱码问题

xml文件乱码

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
/**
 * DOM4J XML乱码问题
 * 根据xml编码的不通生成响应的的格式,防止产生乱码
 * 
 * @author  liaowei
 * @version  [版本号, Dec 30, 2009]
 * @see  [相关类/方法]
 * @since  [产品/模块版本]
 */
public class XMLLuanMa
{
    
    /** 生成的xml文件
     * 根据字符编码生成相应的xml文件到制定的目录下
     * @param path 文件路径
     * @param character 字符编码
     * @see [类、类#方法、类#成员]
     */
    public static void createXml(String path, String character)
    {
 
        //如果上面设置的xml编码类型为utf-8,则应当用FileOutputStream来构建xml文件,否则还是会出现乱码问题
        File file = new File(path);
        XMLWriter xmlWriter = null;
        Document doc = DocumentHelper.createDocument();
        //xml文件字符编码格式化
        OutputFormat characterFormat = OutputFormat.createPrettyPrint();
        
        //设置XML文件的编码格式,如果有中文可设置为GBK或UTF-8
        characterFormat.setEncoding(character);
 
        Element root = doc.addElement("chinaSoft");
        
        Element area = root.addElement("area");
        
        area.addAttribute("id", "111");
        
        Element element = area.addElement("areaName");
        element.setText("济南");
        
        element = area.addElement("areaCode");
        element.setText("0531");
        
        element = area.addElement("manager");
        element.setText("安总");
        
        element = area.addElement("managerAge");
        element.setText("28");
 
        if("gbk".equalsIgnoreCase(character))
        {
            try {
                xmlWriter = new XMLWriter(new FileWriter(file), characterFormat);
            } catch (IOException e1) {
                e1.printStackTrace();
            }  
        }
        else
        {
            FileOutputStream fos = null;
            try {
                fos = new FileOutputStream(file);
                
                xmlWriter = new XMLWriter(fos, characterFormat);
            } 
            catch (FileNotFoundException e) {
                e.printStackTrace();
            }
            catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
        }
       
        try {
            //生成响应的xml文件输出
            xmlWriter.write(doc); 
            
            xmlWriter.close();
            
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    public static void main(String[] args)
    {
        //测试生成的xml文件
        XMLLuanMa.createXml("C:\\liaowei.xml","GBK");
    } 
}
 
 
 
1、XML常见的解析方式有(多选) 答案 ABD
  A、DOM4J    B、SAX   C、W3C  D、STAX
  
2、对于解析内容特大的xml文件效率最高的那种 (单选) 答案 A
  A、DOM4J   B、SAX  C、STAX
3、对于XML文件生成,如果含有汉字,而我们要求的编码是UTF-8,我们选择那种方式可以避免汉字乱码问题(单选) 答案B
  A、XMLWriter xmlWriter = new XMLWriter(new FileWriter(new File("c:\\test.xml")), characterFormat)
  B、FileOutputStream fos = new FileOutputStream(file);
     XMLWriter xmlWriter = new XMLWriter(fos, characterFormat);
  C、XMLWriter xmlWriter = new XMLWriter(fos);

你可能感兴趣的:(JAVA技能等级考试(2)-XML乱码问题)