我只想解析一个感兴趣的xml元素(例如见下面:名称等于math的类元素),我想在解析遇到这个条件的第一个元素时停止。 (因为只有一个名为math的类,所以一旦找到元素就没有必要继续)。
但是,如果我按如下方式实现,代码在找到我感兴趣的元素之后继续读取整个文件(xml文件很长,因此需要很长时间)。我的问题是如果解析了名为= math的第一个类元素后如何停止它?
my $twig = new XML::Twig(TwigRoots => {"class[\@name='math']" => \&class});
$twig->parsefile( shift @ARGV );
此外,我还希望在解析后从xml文件(不仅是内存)中删除此类,以便下次解析具有其他名称的类时,不会解析类元素。有可能吗?
答案 0 :(得分:6)
您正在寻找的是XML :: Twig的finish_print
和finish_now
:
finish_print
停止树枝处理,冲洗树枝并继续完成打印 文件尽快。使用 修改文档时使用此方法 并且修改完成了。
finish_now
停止twig处理,没有完成解析文档(哪个 实际上可能没有良好的形式 在finish_now之后的点之后 所谓的)。执行后继续执行 Lparse>或parsefile调用。内容 树枝是经过解析的 远(当时所有开放的元素 调用finish_now被认为 闭)。