Ruby 1.8.6のREXML/XPathのバグ
Ruby 1.8.6でXML構文を扱うとき、XPathがうまく機能しないバグがあるそうです。Rubyのソースファイルを修正すると正常に動作します。
修正ファイル: /usr/lib/ruby/1.8/rexml/element.rb
修正箇所:
def attribute( name, namespace=nil ) prefix = nil
■■prefix = namespaces.index(namespace) if namespace
■■prefix = nil if prefix == ‘xmlns’ #この行を追加
■■attributes.get_attribute( “#{prefix ? prefix + ‘:’ : }#{name}” )
end
参考:
#102 (Cannot select attribute with default namespace) – rexml – Trac
関連する記事
このサイトの内容は私の個人的な見解であり、私の所属するいかなる団体や組織の見解を反映しているものではありません。
2007年11月25日 22時36分 #
こういうのは普通 patch で配るんだよ。
ファイル名 element.rb.patch:
*** element.rb.orig Sun Nov 25 22:32:41 2007
— element.rb Sun Nov 25 22:33:20 2007
***************
*** 553,558 ****
— 553,559 —-
def attribute( name, namespace=nil )
prefix = nil
prefix = namespaces.index(namespace) if namespace
+ prefix = nil if prefix == ‘xmlns’
attributes.get_attribute( “#{prefix ? prefix + ‘:’ : ”}#{name}” )
end
このファイルを使って、element.rb がある場所で
> patch
2007年11月25日 22時46分 #
Mocelさん
教えてくれてありがとうー。
参考にしたサイトにもそのスタイルでソースコードが書かれていたから、何か特別な記述法だとは思ったけど、patchっていうコマンドがあるとは知りませんでした。