From: moonwolf@... Date: 2007-06-28T00:24:51+09:00 Subject: [ruby-list:43668] Re: REXMLでのパーサーの不具合について MoonWolfです。 REXMLの内部ではすべてのテキストがUTF-8で扱われる以上、正規表現全てにuオプ ションを付けないと駄目なんじゃないかなぁ。 uが付いてたり付いてなかったりしてます。 REXMLのunnormalizeまわりは書籍 Ruby de XML(初版)の126ページにあるように不 完全のようです。 rexml/text.rbにあるREXML::Text::unnormalizeもbaseparser.rbと同じような実装 です。 "rv.gsub( /&/, '&')"という処理が最後にあるというのはおかしい。 数値文字参照を変換した後だから'&'が'&'扱いされてしまうのでは? 実体参照のunnormalizeは複数回のgsubではなく1つのgsubで一括で処理するのが良 いと思います。 以下、出力がおかしい例です。 parser.unnormalize('<&amp;') # => "<&" parser.unnormalize("<&amp;") # => "<&"