Ruby 初心者スレッド Part 17
■ このスレッドは過去ログ倉庫に格納されています
0322デフォルトの名無しさん
2008/01/28(月) 22:18:58で、<Author>著者名</Author>とか<Publisher>出版社</Publisher>とか<Title>書名</Title>とかを20種類くらい得たいです。
しかし、xmlの構造が一定ではなくて、「<Publisher>が無い」というような抜けが稀にあります。
なので、固定の巨大な正規表現でがばっと抜き出すということができません。
#パターン1
h['Author'] = xml.scan(/<Author>(.+?)<\/Author>/).flatten
h['Publisher'] = xml.scan(/<Publisher>(.+?)<\/Publisher>/).flatten
h['Title'] = xml.scan(/<Title>(.+?)<\/Title/).flatten
#パターン2
RE = # 下の結果をあらかじめ直にコピペしたもの
# Regexp.union(/<(Author)>(.+?)<\/Author>/,/<(Publisher)>(.+?)<\/Publisher>/,/<(Title)>(.+?)<\/Title/)
xml.scan(RE).each do |a|
a.compact!
h[a[0]] = a[1]
end
どっちがメモリとかCUP時間とかの負荷少なくて済みそうですか?
ちなみにrexmlとかごっついパーサは3秒くらい止まるので候補になりませんでした
■ このスレッドは過去ログ倉庫に格納されています