|
2007年06月17日(日)更新 |
■生成するXMLファイルのエンコーディング(encoding)指定
|
たけち: 前回は、ルート要素だけの簡単なXMLファイルを作成したね。 さらら: えぇ。manyosyuノードだけのXMLファイルだったわね。 たけち: うん。ここで、どんな内容だったかをもう一度確認してみよう。次のようだったね。 |
| (前回)生成したXMLファイル例 sample22.xml |
|---|
| <?xml version="1.0" encoding="UTF-8"?> <manyosyu/> |
|
たけち: 1行目の さらら: えっ〜と、、、確か、「このXMLファイルの文字コードがUTF-8です。」って意味だったわね。 たけち: そうそう。 さらら: あっ。そういえば、前回のプログラムでは、そんなこと何も指定してなかったような気がするけど・・・ たけち: うん。何も指定しないとUTF-8で生成されるんだよ。 さらら: そうなの。 |
|
■XMLファイルのエンコーディング(encoding)指定方法
|
たけち: XMLファイルのエンコーディング(encoding)指定は、TransformerクラスのsetOutputPropertyメソッドで指定するんだ。 さらら: そっ、そう・・・・・ (^ ^; たけち: あっ、すごく簡単だから、ねっ。次に指定方法を書いておくね。 |
|
TransformerクラスのsetOutputPropertyメソッド
void | setOutputProperty(String name,String value) |
|---|---|
| ・機能: このノードが子ノードを持っているかどうかを判断します。 | |
| ・パラメタ: String name : 出力プロパティの名前 エンコーディング(encoding)の場合、OutputKeys.ENCODING を指定します String value : 出力プロパティの値 エンコーディング(encoding)の場合、"UTF-8"や"Shift_JIS" を指定します |
|
| ・戻り値: ありません |
(注) OutputKeys.ENCODINGは"encoding"という文字列として定義されています。
|
さらら: で、結局はどう書けばいいの? たけち: encoding="Shift_JIS"として出力したいときには、次のように書けばいいんだよ。 |
setOutputProperty(OutputKeys.ENCODING,"Shift_JIS") |
|---|
|
さらら: これだけでいいのね。 たけち: そうだよ。。。。(^ ^; |
■DOMサンプルプログラム encoding="Shift_JIS"を指定
|
たけち: じゃ、今回のDOMサンプルプログラム(23)のソースコードを載せておくね。 さらら: はい。 |
| 行 | DOMサンプルプログラム(23) DOMSample23.java |
|---|---|
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
package dom.study.sample_2;
import java.io.File;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
public class DOMSample23 {
public static void main(String[] args) {
try {
DocumentBuilderFactory dbfactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docbuilder = dbfactory.newDocumentBuilder(); // DocumentBuilderインスタンス
Document document = docbuilder.newDocument(); // Documentの生成
/*
* root要素として manyosyu要素を生成
*/
Element root = document.createElement("manyosyu"); // manyosyuノード作成
document.appendChild(root); // ノードをDocumentに追加
/*
* DOMオブジェクトを文字列として出力
*/
TransformerFactory tfactory = TransformerFactory.newInstance();
Transformer transformer = tfactory.newTransformer();
/*
* encoding="Shift_JIS"を指定
*/
transformer.setOutputProperty(OutputKeys.ENCODING, "Shift_JIS");
File outfile = new File("sample23.xml");
transformer.transform(new DOMSource(document), new StreamResult(outfile));
} catch (ParserConfigurationException e) {
// TODO 自動生成された catch ブロック
e.printStackTrace();
} catch (TransformerException e) {
// TODO 自動生成された catch ブロック
e.printStackTrace();
}
}
}
|
|
たけち: 今回は、41行目に注目してね。41行目の さらら: はい。わかるわ。 たけち: それから、43行目の さらら: はい。 |
|
■DOMSample23の実行例
|
たけち: じゃ、このDOMSample23プログラムを実行させてみよう。Eclipseで実行させた場合、実行結果として、図のように作成されたファイル名が表示されるよ。で、その中身を見てみると図のようになっていることが分かるよ。 |

|
(注): Eclipseで実行したときには、プロジェクトを選択して、右クリックで表示されるメニューの中から [更新(F)] を選択してください。作成されたファイル名(この例の場合は、sample23.xml)が表示されます。 |
|
さらら: manyosyuという空の要素だけがあるXMLファイルができていて、encoding="Shift_JIS"ってなっているわ。なるほどね。 たけち: 今回は、これでおしまい。次回からは、もう少し複雑なXMLファイルを作ってみようね。 さらら: あっ、は〜い。ありがとね。 → 次回は要素に属性を追加です。....... (^ ^; |
|