ーファイルーー
<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"></a>
</root>
puts doc.elements['root/a/b'].text
=>bbb1
puts doc.elements['root/a[2]/b[2]'].text
=>bbb5
doc.elements.each('root/a/b') do |element|
puts element.text
end
=>bbb1~bbb5
doc.elements.each('root/a[1]/b[2]') do |element|
puts element.previous_element.text
end
=>bbb1
doc.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[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.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
更新する
doc = Document.new File.new("guitars.xml")
elements["color"].text = "Red"
File.write("guitars.xml",doc)
rubyの古いバージョンで上記はエラーになった。
open(path, "w") {|f| f.write doc}