かずきのBlog@hatena

日本マイクロソフトに勤めています。XAML + C#の組み合わせをメインに、たまにASP.NETやJavaなどの.NET系以外のことも書いています。掲載内容は個人の見解であり、所属する企業を代表するものではありません。

郵便番号のCSVをオレオレXMLに変換

ちょっと郵便番号の一覧の書かれたXMLが欲しくなったのでCSVから変換してみた。
CSVのダウンロードは↓からしました。
http://www.post.japanpost.jp/zipcode/download.html

このCSVを下のRubyスクリプトで食わせて完成。
一度メモリ上の配列に、必要な列だけ抜いた配列でデータを保持して、ERBでXMLに出力させようと思ったけど、メモリいっぱい食べるので諦めました。

require 'csv'

puts "<?xml version='1.0' ?>"
puts "<PostCodes>"
CSV.foreach("KEN_ALL.CSV") do |row|
  puts "<PostCode number='#{row[2]}' address='#{row[6] + row[7] + row[8]}' />"
end
puts "</PostCodes>"

これで以下のようなXMLをゲット

<?xml version='1.0' ?>
<PostCodes>
<PostCode number='0600000' address='北海道札幌市中央区以下に掲載がない場合' />
<PostCode number='0640941' address='北海道札幌市中央区旭ケ丘' />
…途中省略…
<PostCode number='9071544' address='沖縄県八重山郡竹富町鳩間' />
<PostCode number='9071800' address='沖縄県八重山郡与那国町以下に掲載がない場合' />
<PostCode number='9071801' address='沖縄県八重山郡与那国町与那国' />
</PostCodes>