|
2007年06月17日(日)更新 |
■テキストノードを追加
|
たけち: 前回は属性ノードをを追加したけど、今回は、テキストノードを追加してみよう。 さらら: は〜い。 たけち: 今回は次のようなXMLファイルを作成してみよう。 |
| 今回生成するXMLファイル例 sample25.xml |
|---|
| <?xml version="1.0" encoding="UTF-8"?> <manyosyu><volume no="01"/>万葉集 巻一</manyosyu> |
|
さらら: 前回に作成したXMLファイルに「万葉集 巻一」って文字列が追加されるのね。 たけち: そうそう。じゃ、このXMLデータをどう作るかを、テキストノードの箇所を中心に図に示しておくね。属性の追加などは、前回の図を参照してね。 さらら: はい。 |
|

■テキストノードの生成方法
|
たけち: 図の「F テキストノードの生成」について説明するね。 さらら: はい。 たけち: 次のように、DocumentクラスのcreateTextNodeメソッドを使えばいいんだよ。 |
|
DocumentクラスのcreateTextNodeメソッド
Text | createTextNode(String textdata) |
|---|---|
| ・機能: 指定されたテキストを含むテキストノードを作成します。 | |
| ・パラメタ: String textdata : テキストノードの内容とするテキスト | |
| ・戻り値: Textオブジェクト |
|
さらら: テキストノードの内容とする文字列を指定するだけでいいのね? たけち: そうだよ。 さらら: よかった。簡単ね。 |
■DOMサンプルプログラム テキストノードを生成・追加
|
たけち: じゃ、今回のDOMサンプルプログラム(25)のソースコードを載せておくね。 さらら: はい。 |
| 行 | DOMサンプルプログラム(25) DOMSample25.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 56 57 58 59 60 61 62 63 64 |
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;
import org.w3c.dom.Text;
public class DOMSample25 {
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に追加
/*
* volume要素を生成し、no属性を追加
*/
Element volume = document.createElement("volume");
volume.setAttribute("no", "01");
root.appendChild(volume);
/*
* テキストノードを生成し、volumeノードの子要素として追加
*/
Text textnode= document.createTextNode("万葉集 巻一");
volume.appendChild(textnode);
/*
* DOMオブジェクトをファイルとして出力
*/
TransformerFactory tfactory = TransformerFactory.newInstance();
Transformer transformer = tfactory.newTransformer();
File outfile = new File("sample25.xml");
transformer.transform(new DOMSource(document), new StreamResult(outfile));
} catch (ParserConfigurationException e) {
// TODO 自動生成された catch ブロック
e.printStackTrace();
} catch (TransformerException e) {
// TODO 自動生成された catch ブロック
e.printStackTrace();
}
}
}
|
|
たけち: 今回は、43行目に注目してね。43行目の さらら: ええ。で、その後の44行目の |
|
■DOMSample25の実行例
|
たけち: じゃ、このDOMSample25プログラムを実行させてみよう。Eclipseで実行させた場合、実行結果として、図のように作成されたファイル名が表示されるよ。で、その中身を見てみると図のようになっていることが分かるよ。 |

|
(注): Eclipseで実行したときには、プロジェクトを選択して、右クリックで表示されるメニューの中から [更新(F)] を選択してください。作成されたファイル名(この例の場合は、sample25.xml)が表示されます。 |
|
さらら: manyosyu要素のvolume子要素の内容が"万葉集 巻一"になっているわ。これで文字列内容を持った要素ができあがるのね。 たけち: 今回も、そんなに難しくなかったよね。 さらら: はい。ありがとう。 → 次回はノードを指定したノードの前に追加です。....... (^ ^; |
|