1

だから私は現在内部ツールに取り組んでいて、この問題が発生しました。特定のタグが見つかるまで、このxmlファイルを10秒ごとに解析しようとしています。ただし、このxmlファイルは、ユーザーがクリックしてさまざまな操作を行うと変更されます。新しいfileinputstreamを開き、xmlファイルを解析するループがあります。しかし、ファイルの早期終了エラーが発生し続けます。誰かがこれを処理する方法を知っていますか?

  while(notfound)
  {    
       fis = new FileInputStream(new File("c:/tmp/abc.xml"));
       SaxParser.parse(fis, sampleHandler);
       notFound = sampleHandler.checkIfFound();
  }
4

1 に答える 1

1

XMLファイルは整形式でなければなりません。開いた各タグを閉じる必要があります。

XMLファイルは、全体として、ライターによって閉じられた後にのみ解析できます。

XMLファイルはストリームではなく、ファイルです。

XMLソースをストリームとして解析したいのですが、整形式のフラグメントをとして処理する必要がありますrecords

この構造を想像してみてください。

<log-file>
   <log-record date="...">
      <log-event text="..." />
      <log-event text="..." />
      <log-event text="..." />
   </log-record>

   <log-record date="...">
      <log-event text="..." />
      <log-event text="..." />
      <log-event text="..." />
   </log-record>

   <log-record date="...">
      <log-event text="..." />
      <log-event text="..." />
      <log-event text="..." />
   </log-record>

<log-file>

ファイルリーダー(パーサーではない)は、で始まる整形式のフラグメントを抽出する場合があります。XMLパーサーは、抽出されたフラグメントを解析する場合があります。

于 2012-10-24T22:40:00.487 に答える