なひです。

正規表現ベースで、UTF8に変換しないで使う
XML processor(例えばNQXML)も場面によっては便利、
という気持ちは変わりませんが、とりあえずそれは
おいといて、標準添付問題に限って反応します。

> From: Siena. [mailto:siena / cr.chiba-u.ac.jp] 
> Sent: Friday, May 17, 2002 7:23 PM

> # [ruby-list:35143] は、なひさんの意図を
> # 読み取れてないコメントでごめんなさいです

いいえー。
意図が伝わらないのは読み手だけの責任ではありません。^^;

> (*) ここで「解析することを考えた場合」と書いてますが、
> それ以外のXPathやwriterについて、自信がないためです。
> 
> あたしは、XPath では ASCII な識別子しか使ってませんし、
> #write は UTF-8 でまとめて書き出してから変換しているので、
> 問題があるか分かりませんです m(.. )m

なひも同様です(一切使ってない)。
どなたか試された方は居ませんでしょうか。

> 問題があるとすれば、REXMLが最近力を入れている
> 「ストリーミングもできるぜ」という機能について、
> 残念ながらその恩恵にあずかることができなさそう、
> ということです。
> ですがこの問題については、現状で問題視しているのは
> なひだけなので、無視していいと思います。

この問題についてですが、なひの杞憂のような気がしています。
後述します。お騒がせして申し訳ないです。

> XML そのものの設計思想に、全部読まなくても逐次パース可能、
> というのがあったと思うのですが、ネットワークサービスで反応速度を
> 稼ぐためには、転送しながら処理できる必要があると思っています。
> 今はともかく、先のことを考えるとあまり無視したくはありませんね。
> SOAP なんかだと、結構影響しそうですもの。

XMLそのものの設計思想にそれがあるのかどうかはわかりません。
実際、ストリーミングには全く向かないフォーマットです。
とはいえ仕方なくXMLを使わざるを得ない場合に、
技術的に、可能ならストリーミング解析を行って
パフォーマンスを稼ぎたい、という欲求が(なひには)あります。

SOAPに効くかどうかはモノ次第ですね。RAAのエントリー情報の
一括転送をしようとすると結構効きそうですが、
calc( "add", 1, 1 ) => 2 なんて遊んでる場合は全く効きません。
XML instanceが小さいから。。。

> # 妥協案として、REXML::Sourceを継承して
> # SourceConvertCESForEachLineとかいうクラスを作り、
> # 改行まで読み込んで一行ずつ変換して解析、
> # とするのかなぁ。なんかかっこ悪い。。。
> 
> 現バージョンに依存してしまうかもしれませんが、
> REXML::Source, REXML::SourceIO では @source.readline( '>' )
> でバッファを読んできているようですね。

なるほど、REXML/2.3系はこうやって読んでいるんですね。
2.2以前は固定長バッファを読んでいたので問題視していましたが。。。
確かにこれで問題なくうまくいきそうな気がします。
属性にとてつもなく長い文字列を突っ込みでもしない限り、
ほとんどのeventが、読み込みからほとんど遅延なしに発生
してくれそうです。素晴らしい。

詳しいみなさんどうでしょう。

というわけで、なひの理解が間違ってなければ、
REXMLのストリーミング機能活用についての問題点も解消です。

残るは「できれば変換しないでできるのが好ましい」問題ですが、
高橋さんの言うとおり、ちゃんと仕様に準拠したXML
processorにしようと思うとUTF-8に変換しとくのが安全ですし、
「わかってるひとが用途を限定して使えば便利」を
標準添付にするのも好ましくないでしょう。
というわけでこれについてもなひはREXMLで問題ないと思います。
まつもとさんももう納得してるのかな?

というわけで問題がクリアされたとすると、
あとは別スレッドで走っている実装だけでしょうか。