5

xml の関心のある要素のみを解析したい (たとえば、以下を参照してください: 名前が math に等しいクラス要素)。この条件に一致する最初の要素が解析されたら停止します。(math という名前のクラスは 1 つしかないため、要素が見つかったら続行する必要はありません)。

ただし、次のように実装すると、コードは、関心のある要素が見つかった後もファイル全体を読み取り続けます (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:

仕上げ印刷

小枝の処理を停止し、小枝をフラッシュして、可能な限り速くドキュメントの印刷を終了します。ドキュメントを変更し、変更が完了したときに、このメソッドを使用します。

finish_now

twig の処理を​​停止し、ドキュメントの解析を終了しません (実際には、finish_now が呼び出された時点以降は整形式ではない可能性があります)。Lparse> または parsefile 呼び出しの後に実行が再開されます。小枝の内容は、これまでに解析されたものです (finish_now が呼び出された時点で開いているすべての要素は、閉じていると見なされます)。

于 2010-08-02T02:46:03.847 に答える