我怎样才能加速XML :: Twig
发布时间:2020-12-15 23:54:36 所属栏目:百科 来源:网络整理
导读:我使用 XML::Twig 来解析一个非常大的XML文档.我想根据 change / change将其拆分为块.标签. 现在我有: my $xml = XML::Twig-new(twig_handlers = { 'change' = parseChange,});$xml-parsefile($LOGFILE);sub parseChange { my ($xml,$change) = @_; my $me
我使用
XML::Twig 来解析一个非常大的XML文档.我想根据< change>< / change>将其拆分为块.标签.
现在我有: my $xml = XML::Twig->new(twig_handlers => { 'change' => &;parseChange,}); $xml->parsefile($LOGFILE); sub parseChange { my ($xml,$change) = @_; my $message = $change->first_child('message'); my @lines = $message->children_text('line'); foreach (@lines) { if ($_ =~ /[^a-zA-Z0-9](?i)bug(?-i)[^a-zA-Z0-9]/) { print outputData "$_n"; } } outputData->flush(); $change->purge; } 现在,当它从XML中提取该块时,它正在运行parseChange方法.它变得非常缓慢.我通过$/ =< / change>从文件中读取XML来测试它并编写一个函数来返回XML标记的内容,它的速度更快. 是否有我遗漏的东西或我使用XML :: Twig错误?我是Perl的新手. 编辑:以下是更改文件的示例更改.该文件由很多这些文件一个接一个地组成,它们之间不应该有任何东西: <change> <project>device_common</project> <commit_hash>523e077fb8fe899680c33539155d935e0624e40a</commit_hash> <tree_hash>598e7a1bd070f33b1f1f8c926047edde055094cf</tree_hash> <parent_hashes>71b1f9be815b72f925e66e866cb7afe9c5cd3239</parent_hashes> <author_name>Jean-Baptiste Queru</author_name> <author_e-mail>jbq@google.com</author_e-mail> <author_date>Fri Apr 22 08:32:04 2011 -0700</author_date> <commiter_name>Jean-Baptiste Queru</commiter_name> <commiter_email>jbq@google.com</commiter_email> <committer_date>Fri Apr 22 08:32:04 2011 -0700</committer_date> <subject>chmod the output scripts</subject> <message> <line>Change-Id: Iae22c67066ba4160071aa2b30a5a1052b00a9d7f</line> </message> <target> <line>generate-blob-scripts.sh</line> </target> </change>
目前,您的程序正在处理所有XML文档,包括您不感兴趣的更改元素之外的数据.
如果将构造函数中的twig_handlers参数更改为twig_roots,则将仅为感兴趣的元素构建树结构,其余的将被忽略. my $xml = XML::Twig->new(twig_roots => { change => &;parseChange }); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |