XMLå¦çãREXMLã®ä½¿ãæ¹
ããå¿ããã®ã§ã
ãããªXMLãç¨æããå ´åã®ä¾ã
<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>
å¿ ãrequire
require 'rexml/document'
XMLèªã¿è¾¼ã¿
doc = REXML::Document.new(open("hoge.xml"))
ã¨ããããå ¨ædump
puts doc #çµæ <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>
ãã³ãã¤ã³ãã§åå¾ï¼1çªç®Aã¿ã°ã®åã1çªç®Bã¿ã°ã®å¤ï¼
æ·»ãåãæå®ãã¦ããªãã®ã§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
ããã¯ãå
¨Aã¿ã°ã®ããããã1ã¤ç®ã®Bã¿ã°ãã¨ãªãã
ã«ã¼ãããã®ã¯Aã¿ã°ã§ãBã¯ã«ã¼ããã¦ããªãã
ããã¦ã3ã¤ç®Aã¯åè¦ç´ ã«Bã¿ã°ããªãã®ã§ã¨ã©ã¼ã«ãªãã
doc.elements.each('root/a') do |element| puts element.elements['b'].text end
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 #çµæ 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[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 #"root/[@name='a1']/b"ãã¨ããæå®ãå¯è½ããã®å ´åã¯ã¿ã°åãéå®ããªããªã
ç¹å®ã®å±æ§å¤ãæã¤ã¿ã°ã®ãå¥ã®å±æ§å¤
puts doc.elements["root/a[@name='a3']"].attributes['price'] #çµæ 100
åè