2007年06月17日(日)更新 |
■要素に属性を追加
たけち: 今回は、要素に属性をつけてみよう。 さらら: は〜い。属性ノードを追加、ってことね。 たけち: そうそう。で、今回は次のようなXMLファイルを作成してみよう。 |
今回生成するXMLファイル例 sample24.xml |
---|
<?xml version="1.0" encoding="UTF-8"?> <manyosyu><volume no="01"/></manyosyu> |
さらら: えっ〜と、、、manyosyu要素の子要素にvolume要素があるのね。で、volume要素に値が"01"のvolume属性があるのね。 たけち: そうそう。じゃ、このXMLデータをどう作るかを図に示しておくね。 |
|
■属性の追加方法
たけち: 図の「D no属性の追加」について説明するね。 さらら: はい。 たけち: 次のように、ElementクラスのsetAttributeメソッドを使えばいいんだよ。 |
|
ElementクラスのsetAttributeメソッド
void | setAttribute(String name,String value) |
---|---|
・機能: ノードに新しい属性を追加します。 | |
・パラメタ: String name : 属性の名前 String value : 属性の値 | |
・戻り値: ありません |
さらら: これだけでいいの? たけち: そうだよ。(ネームスペースURIを持つ属性を追加するときは、setAttributeNSを使います。) さらら: よかった。簡単ね。 |
■DOMサンプルプログラム 属性を追加
たけち: じゃ、今回のDOMサンプルプログラム(24)のソースコードを載せておくね。 さらら: はい。 |
行 | DOMサンプルプログラム(24) DOMSample24.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 |
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 DOMSample24 { 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); /* * DOMオブジェクトをファイルとして出力 */ TransformerFactory tfactory = TransformerFactory.newInstance(); Transformer transformer = tfactory.newTransformer(); File outfile = new File("sample24.xml"); transformer.transform(new DOMSource(document), new StreamResult(outfile)); } catch (ParserConfigurationException e) { // TODO 自動生成された catch ブロック e.printStackTrace(); } catch (TransformerException e) { // TODO 自動生成された catch ブロック e.printStackTrace(); } } } |
たけち: 今回は、36行目に注目してね。36行目の さらら: はい。 |
|
■DOMSample24の実行例
たけち: じゃ、このDOMSample24プログラムを実行させてみよう。Eclipseで実行させた場合、実行結果として、図のように作成されたファイル名が表示されるよ。で、その中身を見てみると図のようになっていることが分かるよ。 |
(注): Eclipseで実行したときには、プロジェクトを選択して、右クリックで表示されるメニューの中から [更新(F)] を選択してください。作成されたファイル名(この例の場合は、sample24.xml)が表示されます。 |
さらら: manyosyu要素のvolume子要素に値が"01"のno属性が設定されているわ。なるほどね。 たけち: 今回は、そんなに難しくなかったよね。 さらら: えぇ、。いつもありがとね。 → 次回はテキストノードを追加です。....... (^ ^; |
|