2

私はRubyプログラマーの初心者で、巨大なXMLを変換して別のJSONファイルに保存するという新しい割り当てを受けました。たとえば、次のようになります。

<listing>
  <id>abc12345</id>
  <name>BCD</name>
  <address>12 Main St</address>
</listing>

<listing>
  <id>a1b2c3d4</id>
  <name>XYZ</name>
  <address>14 Main St</address>
</listing>

<listing>
  <id>bcde45678</id>
  <name>MNO</name>
  <address>14 Broadway</address>
</listing>

私はそれを個々のファイルに保存したいと思います。この例のファイル名として id を使用すると、abc12345.json、a1b2c3d4.json、および bcde45678.json になり、それぞれに次のようなものが含まれます。

    {
  "listing": {
    "id": "bcde45678",
    "name": "MNO",
    "address": "14 Broadway"
  }
}

誰でもこの問題について私を助けることができますか? 将来のすべての助けのために、私は本当に感謝しています

4

2 に答える 2

2

リスト ブロックを個々のファイルに JSON として出力することを想定しています。'active_support/core_ext' と 'nokogiri' にアクセスでき、XML が JSON にどのように変換されるかについてあまり気にしない場合は、次のようにします。

require 'active_support/core_ext'
require 'nokogiri'

xml = Nokogiri::XML(File.read "yourfile")

xml.search("//listing").each do |l|
  filename = l.at_xpath("id").content
  File.open(filename + '.json', 'w') do |file|
    file.print Hash.from_xml(l.to_xml).to_json
  end
end
于 2013-06-20T20:40:57.093 に答える