2009年3月28日土曜日

XStreamで文字コードを指定する

XStreamは、XMLの最初でencoding="UTF-8"を指定してもその様に解釈してくれない。文字コードはデフォルト、OSの文字コードとなる。指定したければ以下のようにする。

1. 永続化する


public void save(Object obj, String path) throws IOException {
BufferedWriter bw = null;
try {
bw = new BufferedWriter(
new OutputStreamWriter(
new FileOutputStream(path), "文字コード"));
XStream xstream = new XStream(new DomDriver());
xstream.toXML(obj, bw);
} finally {
if (bw != null) {
bw.close();
}
}
}


2. 復元する


public Object open(String path) throws IOException {
Object obj = null;
BufferedReader in = null;

try {
in = new BufferedReader(
new InputStreamReader(
new FileInputStream(path),"文字コード"));
XStream xstream = new XStream(new DomDriver());
obj = xstream.fromXML(in);
} finally {
if (in != null) {
in.close();
}
}
return obj;
}

0 件のコメント: