xstream - bonne manière d'économiser de XML en UTF-8

Précédemment, à lire XML en UTF-8 par xstream, je suis en utilisant DomDriver comme suit :

XStream xStream = new XStream(new DomDriver("UTF-8"));

Cependant, plus tard, je réalise que c'est TRÈS lent. J'utilise de la manière suivante :

Optimiser la vitesse de chargement de xstream

Cela fonctionne bien au moins.

Cependant, plus tard, je me rends compte de la même technique ne peut pas être appliqué à écrire du XML. Je seront obtenir tous ??? des personnages.

C'est la dernière réalisable code à l'aide de DomDriver pendant écrire

public static boolean toXML(Object object, File file) {
    XStream xStream = new XStream(new DomDriver("UTF-8"));
    OutputStream outputStream = null;

    try {
        outputStream = new FileOutputStream(file);
        xStream.toXML(object, outputStream);
    }
    catch (Exception exp) {
        log.error(null, exp);
        return false;
    }
    finally {
        if (false == close(outputStream)) {
            return false;
        }
        outputStream = null;
    }

    return true;
}

Le code ci-dessus fonctionne très bien. Afin de correspondre avec la lire méthode qui n'utilise pas de DomDriver, j'ai modifier le code pour

public static boolean toXML(Object object, File file) {
    XStream xStream = new XStream();
    OutputStream outputStream = null;
    Writer writer = null;

    try {
        outputStream = new FileOutputStream(file);
        writer = new OutputStreamWriter(outputStream, Charset.forName("UTF-8"));
        xStream.toXML(object, outputStream);
    }
    catch (Exception exp) {
        log.error(null, exp);
        return false;
    }
    finally {
        if (false == close(writer)) {
            return false;
        }
        if (false == close(outputStream)) {
            return false;
        }
        writer = null;
        outputStream = null;
    }

    return true;
}

Ce moment, tous mes caractères Chinois changements ???

Mai je sais tout ce que j'avais fait de mal?

Hi - Ce que vous êtes de passage comme "objet" dans la méthode ci-dessus?

OriginalL'auteur Cheok Yan Cheng | 2010-09-04