ruby + XML

  • XML形式のデータから情報を取り出す方法2

元のXMLファイル [Sample.xml]


hatena.ne.jp
2007-01-13 00:00:00

ここから、siteIdとdayを取り出す。


rubyのソースファイル [Proc.rb]

require "rexml/document"
require "kconv"
xml_file_name = ARGV[0]
doc = nil
File.open(xml_file_name) {|xmlfile|
doc = REXML::Document.new(xmlfile)
}
doc.elements.each('results/siteId'){|site| print(site.text.tosjis, " ")}
doc.elements.each('results/date'){|date| print(date.text.tosjis, "\n")}

!new version
bodyがあって、そこから改行、カンマを省きながら、同一行に出力する。

require "rexml/document"
require "kconv"
xml_file_name = ARGV[0]
doc = nil
File.open(xml_file_name) {|xmlfile|
doc = REXML::Document.new(xmlfile)
}
doc.elements.each('results') {|document|
	document.elements.each('siteId/'){|siteId|print(siteId.text,",")}
	document.elements.each('date/'){|date|print(date.text,",")}
	document.elements.each('body/'){|body| 
		s=body.text
		s2=s.gsub("\n","")
		puts s2.gsub("\,","")
	}
}

実行:
ruby ./Proc.rb Sample.xml