xsd→object→xml
■XSD→ XMLスキーマ ドキュメントの作成に使用する W3C (World Wide Web Consortium) の標準言語。
■XML→ 【Extensible Markup Language】
文書やデータの意味や構造を記述するためのマークアップ言語
(root)
(a name='a1')
(b)bbb1(/b)
(b)bbb2(/b)
(b)bbb3(/b)
(c)ccc1(/c)
(/a)
(a)
(b)bbb4(/b)
(b)bbb5(/b)
(/a)
(a name='a3' price='100'/)
(/root)
の読み込みrequire 'rexml/document'
doc = REXML::Document.new(open("〜〜.xml"))・添え字を指定していない→ 1番目のものが取られる
puts doc.elements['root/a/b'].text → bbb1・添え字を指定する
puts doc.elements['root/a[2]/b[2]'].text → bbb5・全Aタグの全子要素bタグ値を全部表示
doc.elements.each('root/a/b') do |element|
puts element.text
end
→
bbb1
bbb2
bbb3
bbb4
bbb5・1つ目Aタグのbタグ値全部表示
doc.elements.each('root/a[1]/b') do |element|
puts element.text
end
→
bbb1
bbb2
bbb3・1つ前のタグと後ろのタグ
doc.elements.each('root/a[1]/b[2]') do |element|
puts element.previous_element.text
end
→ bbb1doc.elements.each('root/a[1]/b[2]') do |element|
puts element.next_element.text
end
→ bbb3・タグ名取得
doc.elements.each('root/a[1]') do |element|
puts element.name
end
→ a・タグ名取得(子要素)
doc.elements.each('root/a[1]') do |element|
puts element.elements[4].name
end
→ c・子要素数表示
doc.elements.each('root/a[2]') do |element|
puts element.elements.size
end
→ 2・属性値取得
doc.elements.each('root/a[3]') do |element|
puts element.attributes["name"]
end
→ a3・属性はHashで返る
hash = Hash.new
doc.elements.each('root/a[3]') do |element|
hash = element.attributes
end
puts hash.size #=>2
puts hash["name"] #=>a3・属性が特定値の要素を持つタグの子要素値
doc.elements.each("root/a[@name='a1']/b") do |element|
puts element.text
end
→
bbb1
bbb2
bbb3・特定の属性値を持つタグの、別の属性値
puts doc.elements["root/a[@name='a3']"].attributes['price']
→
100
■ツール
・Rails 3 XML Builder / Twilio API
・XMLBeans
・Trang
■参考サイト
・Rubyによるテキスト処理-IBM
http://www.ibm.com/developerworks/jp/xml/library/x-rubytextproc/