[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