5

我只想解析一个感兴趣的 xml 元素(例如,见下文:名称等于数学的类元素),并且我想在解析达到此条件的第一个元素时停止。(由于只有一个类名为 math,一旦找到元素就没有必要继续了)。

但是,如果我按如下方式实现,则代码在找到我感兴趣的元素后会继续读取整个文件(xml 文件很长,因此需要很长时间)。我的问题是,一旦解析了 name = math 的第一个类元素,如何停止它?

my $twig = new XML::Twig(TwigRoots => {"class[\@name='math']" => \&class}); $twig->parsefile( shift @ARGV );

此外,我还想在解析后从 xml 文件中(不仅从内存中)删除该类,以便下次解析具有其他名称的类时,不会解析该类元素。有可能这样做吗?

4

1 回答 1

8

看来您正在寻找的是 XML::Twigfinish_printfinish_now

完成打印

停止树枝处理,冲洗树枝并继续尽快完成打印文档。修改文档时使用此方法,修改完成。

现在完成

停止 twig 处理,未完成对文档的解析(在调用 finish_now 之后实际上可能格式不正确)。在 Lparse> 或 parsefile 调用之后继续执行。twig 的内容是到目前为止已解析的内容(在调用 finish_now 时所有打开的元素都被认为是关闭的)。

于 2010-08-02T02:46:03.847 回答