[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: セキュリティ情報のフィードが壊れている (xml パースできない)



いまいです。

From: Kenshi Muto <kmuto@xxxxxxxx>
Subject: Re: セキュリティ情報のフィードが壊れている (xml パースできない)
Date: Wed, 15 Jun 2005 22:44:23 +0900

> At Tue, 14 Jun 2005 22:53:24 +0900,
> Hideki Yamane wrote:
> >  http://www.debian.org/security/ の rss フィードがおかしくなって
> >  いて xml の parse に失敗します。昨日ぐらいまでは問題ありませんで
> >  した。
> > 
> >  en や de は問題なく、ja だけがおかしな状態のようです。
> >  手元のスクリプトで http://www.debian.org/security/dsa.ja をとって
> >  来てパースすると以下のようになります。
> 
> 構造としては壊れてないように見えますが、中身がEUC-JPなのに、
> encoding="iso-2022-jp"で送ってきてるのですね。

中身も iso-2022-jp のような気がします。encoding が違ってても

$ wget http://www.debian.org/security/dsa.ja
$ kcc -c dsa.ja
dsa.ja:         7-bit JIS [ESC$B, ESC(B]
$ ruby -rrss/1.0 -e'RSS::Parser.parse(ARGF.read)' dsa.ja
$ echo $?
0
$ kcc -e dsa.ja > dsa.ja.euc-jp
$ kcc -c dsa.ja.euc-jp
dsa.ja.euc-jp:  EUC
$ ruby -rrss/1.0 -e'RSS::Parser.parse(ARGF.read)' dsa.ja.euc-jp
(eval):2:in `iconv': "\245\273\245\255\245\345\245\352\245\306\245\243</ti"... (Iconv::IllegalSequence)
        from (eval):2:in `decode'
        from /usr/lib/ruby/1.8/rexml/source.rb:43:in `encoding='
        from /usr/lib/ruby/1.8/rexml/parsers/baseparser.rb:202:in `pull'
        from /usr/lib/ruby/1.8/rexml/parsers/streamparser.rb:16:in `parse'
        from /usr/lib/ruby/1.8/rexml/document.rb:171:in `parse_stream'
        from /usr/lib/ruby/1.8/rss/rexmlparser.rb:21:in `_parse'
        from /usr/lib/ruby/1.8/rss/parser.rb:113:in `parse'
        from /usr/lib/ruby/1.8/rss/parser.rb:69:in `parse'
        from -e:1

なので、RSS::NotWellFormedError ではないような。

> とはいえ、これだと「昨日まで問題なかった」という疑問に答えられない気が
> しますが…。

rss 自体が途中までしか取得できてなかったとか?

$ head -7 dsa.ja > dsa.ja.not_well_formed
$ ruby -rrss/1.0 -e'RSS::Parser.parse(ARGF.read)' dsa.ja.not_well_formed
/usr/lib/ruby/1.8/rss/rexmlparser.rb:23:in `_parse': This is not well formed XML (RSS::NotWellFormedError)
malformed XML: missing tag start
Line:
Position:
Last 80 unconsumed characters:
<rdf:RDF   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";   xmlns="http:       from /usr/lib/ruby/1.8/rss/parser.rb:113:in `parse'
        from /usr/lib/ruby/1.8/rss/parser.rb:69:in `parse'
        from -e:1
# head -8 だと通ったりするし、7 行しか取れなかったってことはないよなぁ。
--
Nobuhiro IMAI <nov@xxxxxxxxxxxx>
Key fingerprint = F39E D552 545D 7C64 D690  F644 5A15 746C BD8E 7106