在XML中:TWIG,一旦找到感兴趣的元素,如何停止解析

use*_*517 5 perl xml-twig

我只想解析一个感兴趣的xml元素(例如见下面:类名称等于数学的类元素),我想在解析遇到这个条件的第一个元素时停止.(因为只有一个名为math的类,所以一旦找到元素就没有必要继续).

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

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

此外,我还希望在解析之后从xml文件(不仅是内存)中删除此类,以便下次解析具有其他名称的类时,不会解析类元素.有可能吗?

DVK*_*DVK 8

看起来你正在寻找的是XML :: Twig's finish_printfinish_now:

finish_print

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

finish_now

停止twig处理,没有完成解析文档(在调用finish_now的点之后实际上可能没有很好地形成).在Lparse>或parsefile调用之后执行恢复.树枝的内容是到目前为止已经解析过的(调用finish_now时所有打开的元素都被认为是关闭的).