3

XMLデータ:

<configs>
<config>
<name>XP</name>
<browser>IE</browser>
<browser>FF</browser>
<browser>Chrome</browser>
</config>
</configs>

私はRuby、Nokogiri、そしてプログラミング全般に不慣れです。自動化に役立つQAツールを作成しようとしています。

Rubyコード:

doc = Nokogiri::XML(open("configs.xml"))
configs = doc.xpath("//configs/config").map do |i|
  {'name' => i.xpath('name').to_s, 'browsers' => i.xpath('browser').to_s}
end

configs.each do |i|
  puts i['name']
  puts i['browsers']
end

これは私が望むことを行い、データを返しますが、XMLタグが含まれています。私が見つけていないものを取り除く方法はありますか?

4

1 に答える 1

7

.textテキストノードデータを取得するために使用します。

:name => i.xpath('name').text

.to_sはXMLノードの文字列表現であり、探している以上のものです。

ただし、個々のブラウザエントリを期待している場合は、コードの残りの部分が少し壊れています。

現状では、テキストデータを1つのブロブにまとめます。代わりに、それらを一緒に結合します。たとえば、次のようになります。

configs = doc.xpath("//configs/config").collect do |cfg|
  browsers = cfg.xpath('browser').collect { |b| b.text }.join(', ')
  { name: cfg.xpath('name').text, browsers: browsers }
end

configs.each do |i|
  puts i[:name]
  puts i[:browsers]
end

のブロブが必要な場合がありますが"IEFFChrome"、その場合は気にしないでください。

于 2012-06-21T18:52:41.590 に答える