0

XML::SimpleでXML ファイルを読み取ろうとすると、次のエラー メッセージが表示されることがあります。

ファイルのファイル パーサー コンテキストを作成できませんでした ...

グーグルで調べたところ、libxml-libxml-perl に問題があるようで、私が使用しているバージョン (1.59-2) で修正されるはずです。

何か案は?

編集:(コード)

sub Read
{
  my ($file, $no_option) = @_;
  my %XML_INPUT_OPTIONS = ( KeyAttr => [], ForceArray => 1 );

  if ((defined $file) && (-f $file))
  {
    my @stats = stat($file);
    if ((defined $XML_CACHE{$file})
      && ($stats[9] == $XML_CACHE{$file}{modif_time}))
    {
      return ($XML_CACHE{$file}{xml});
    }
    else
    {
      my $xml = eval { XMLin($file,
        (defined $no_option ? () : %XML_INPUT_OPTIONS)) };
      AAT::Syslog("AAT::XML", "XML_READ_ERROR", $@) if ($@);
      $XML_CACHE{$file}{modif_time} = $stats[9];
      $XML_CACHE{$file}{xml} = $xml;
      return ($xml);
    }
  }

  return (undef);
}

はい、XML::Simpleキャッシュ機能を使用する必要があります...

4

1 に答える 1

1

「そのようなファイルまたはディレクトリはありません...」というエラーが続きますか? もしそうなら、問題は(なんらかの理由で)スクリプトのそのポイントに到達したときに、渡す対象にXML::Simplexmlファイルが含まれていないことだと思います。簡単に言うと、使用しているスクリプトが不適切な変数 (空白? 空?) を渡している可能性がありXML::Simple、その時点でモジュールがチョークします。デバッグするには、XML::Simple渡す前に渡すものにチェックを追加します。(これがあなたの問題であると私が考える理由を説明する具体的な例については、次の段落を参照してください。)

数ヶ月前、私は同様の問題を抱えていましたWeather::GoogleLWP::Simple 簡単に言えば、天気モジュールは、ユーザー エージェントなしでGoogle からデータを取得しようとしていました。Google は (どうやら) ユーザー エージェントのないリクエストを拒否し始めました。エラーがXML::Simple. LWP::Simple実際、それはとで行われたことが原因でしたWeather::GoogleWeather::Googleというか、で作成したオブジェクトのデータをチェックしていなかったことが原因でしたLWP::Simple。このような場合、最初はどこで何が問題なのかを理解するのが難しい場合があります。

于 2009-07-31T14:06:02.230 に答える