Actions
Bug #15057
closedREXML::Text#value returns a double unescaped string in non-raw mode
Bug #15057:
REXML::Text#value returns a double unescaped string in non-raw mode
Description
REXML::Text
オブジェクトが非rawモードの場合、REXML::Text#value
がエスケープ済みのテキストを二重にエスケープ解除された文字列を返します。
例:
require 'rexml/document'
t = REXML::Text.new("< <", false, nil, false)
t.to_s # => "&lt; <"
t.value # => "< <" (expected: "< <")
REXML::Text#value
のコメントに以下のような記述があるため、上の挙動は期待通りのように見えますが、このコメントそのものが誤りだと思います。
# t = Text.new( "< & &s; russell", false, nil, false )
# t.value #-> "< & sean russell"
非rawモードではコンストラクタの第一引数に渡された文字列はテキストノードが表す文字列そのものを意味するはずです。上で渡された文字列中の "&s;" は実体参照ではなく単なる3文字のテキストを意味します。t.value
は "< & &s; russell" であるべきだと思います。
Actions