iOSアプリ用のマスターデータとして plist にデータを持たせたかったのでやってみました。

実際にやってみると builder っていう gem を使えば簡単でした。jbuilder のXML版です。出力したいデータ(例えば今回の場合だと @languages)だけ用意して、

xml.instruct! :xml, version: '1.0'
xml.declare! :DOCTYPE, :plist, :PUBLIC, '-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd'
xml.plist(version: '1.0') do
  xml.array do
    @languages.each do |language|
      xml.dict do
        language.attributes.each do |key, value|
          xml.key key
          xml.string value
        end
      end
    end
  end
end

こんな感じ ↑ で書いてあげれば、こう ↓ なります。簡単ですね。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <array>
    <dict>
      <key>id</key>
      <string>1</string>
      <key>name</key>
      <string>Ruby</string>
    </dict>
    <dict>
      <key>id</key>
      <string>2</string>
      <key>name</key>
      <string>Objective-C</string>
    </dict>
  </array>
</plist>

にしても xml 使うことあんまり無くなったなー。。
このエントリーをはてなブックマークに追加