1

所以我目前正在开发一个内部工具,并且出现了这个问题。我试图每 10 秒解析一次这个 xml 文件,直到它找到一个特定的标签。但是,当用户单击并执行大量操作时,此 xml 文件会被修改。我有一个循环打开一个新的文件输入流并解析 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 回答