北海道苫小牧市出身の初老PGが書くブログ

永遠のプログラマを夢見る、苫小牧市出身のおじさんのちらしの裏

perlのへぇへぇへぇ(6)

perlSOAP::Liteをいじってて気がついたんだけど、コイツって実体参照のエスケープ(<→<)やアンエスケープ(<→<)をやってくれない。



リクエストをエスケープしてくれないのは、SOAP::Liteのバグじゃないかなーと。エスケープメソッドを呼ぼうとしてるのだが、as_xsd:string()と言う名前で参照しているために呼べていない。適当にいじったら直ったけど、ソース読み切れてないから自信なし。



root# diff Lite.pm.org Lite.pm
906c906,908
< my $method = "as_" . ($object->SOAP::Data::type || '-'); # dummy type if not defined

    • -

> (my $datatype = $object->SOAP::Data::type) =~ s/^\w+://;
> my $method = "as_" . ($datatype || '-'); # dummy type if not defined
> #my $method = "as_" . ($object->SOAP::Data::type || '-'); # dummy type if not defined





レスポンスをアンエスケープしてくれないのは、XML::Parser::Liteの問題・・・ってより仕様らしい。CDATAセクションも読めなかった。XML::Parserが入ってる環境だと、動きが変わると思われ。