たのしいXML: RubyでXMLデータを扱う (8) 要素に属性を追加
sample8.rb

2007年12月02日(日)更新


■要素に属性を追加(sample8.rb)

たけち: 前回はまったく新しく生成したXMLデータをファイル出力してみたね。今回は、要素に属性を追加する方法を学ぶね。

さらら: はい。


■生成するXMLデータ

たけち: 生成するXMLデータとXMLファイルの内容は次のようなものだよ。

生成するXMLデータ

さらら: manyoという名前のルート要素の下に、poem要素がひとつで、pnoとpoetの2つの属性があるのね。

たけち: そうだね。これをREXMLでどう生成してゆくかを、属性について図で説明するね。

XMLデータの生成手順(属性追加)

さらら: add_attributeのパラメタに、属性名と値を書けばいいののね。

たけち: そうだよ。簡単だね。じゃ、具体的なソースコードの例を見てみよう。

さらら: はい。


■Rubyサンプルプログラム(7) sample8.rbのソースコード

Rubyサンプルプログラム(8) sample8.rb
01
02
03
04
05
06
07
08
09
10
11
12
13

14
15
16
17
18
19
20
21
22

require "rexml/document"

out_file_name = "sample8_out.xml"

out_doc = REXML::Document.new()
out_doc.add(REXML::XMLDecl.new(version="1.0", encoding="SHIFT_JIS"))

root_element = REXML::Element.new("manyo")
out_doc.add_element(root_element)

poem_element = REXML::Element.new("poem")
poem_element.add_attribute("pno","0028")
poem_element.add_attribute("poet","持統天皇")

poem_element.add_text("春過ぎて夏来るらし白たえの衣干したり天の香具山")

root_element.add_element(poem_element)

File.open(out_file_name,"w") do |outfile|

    out_doc.write(outfile, 0)

end


※ここでは、文字コードをutf-8としてsample8.rbを作成しています。

さらら: これは簡単ね。12行目で値が"0028"のpno属性を追加して、13行目で値が"持統天皇"のpoet属性を追加しているのね。

たけち: そうだね。今回はとっても簡単だね。

さらら: えぇ。


■サンプルプログラムsample8.rbの実行結果の確認

たけち: じゃ、このsample8.rbを実行した結果をみてみよう。コマンドプロンプトウィンドウで

  • ruby sample8.rb

と入力してみて。

さらら: はい。

さらら: "sample8_out.xml"というファイルができたわ。

たけち: ちゃんと実行できたみたいだね。じゃあ、"sample8_out.xml"ファイルの内容を見てみよう。

出力したXMLデータ sample8_out.xml

<?xml version='1.0' encoding='SHIFT_JIS'?>
<manyo>
    <poem pno='0028' poet='持統天皇'>春過ぎて夏来るらし白たえの衣干したり天の香具山</poem>
</manyo>

さらら: 確かにXMLファイルができているわ。

たけち: 今回はわりと簡単だったよね。

さらら: えぇ、分かりやすかったわ。

たけち: じゃ、今回はここまで。

さらら: は〜い。

 → 次回は属性を削除する sample9.rbです。 (^ ^;


[たのしいXML のインデックス]へ