2010年9月10日星期五

Re: [PerlChina] 解析比较大的xml文件

多谢cnhack TNT!

关于XML::LibXML::SAX 能多给点提示么?搞不太清楚怎么使用,文档写得好“简易”啊。

不过我试用了XML::LibXML,处理相同的文件,从90秒降到了8秒!


#!/usr/bin/perl

use strict;
use XML::LibXML;
use Benchmark;

my $start = new Benchmark;


my $file = $ARGV[0];
my $parser = XML::LibXML->new();
my $tree = $parser->parse_file($file);
my $root = $tree->getDocumentElement;
my @specEle = $root->getElementsByTagName($ARGV[1]);

foreach my $eid (@specEle) {
    my $oexid = $eid->getAttribute('id');
    print "oexid $oexid \n";
}

my $end = new Benchmark;
my $diff = timediff( $end, $start );
# report
print "Time taken was ", timestr( $diff, 'all' ), " seconds\n";




2010/9/10 cnhack TNT <cnhacktnt@gmail.com>
用 XML::LibXML::SAX 好了


2010/9/10 ZHANG Jiaqiang A <Jiaqiang.a.Zhang@alcatel-sbell.com.cn>

请教一下,目标还比较简单,就是从xml文件中抽取某类element的某个固定的attr的值,我用perl的XML::Parser模块写了一下,耗时90秒。
 
希望能大幅度地提高一下效率,想听听大家有啥建议?
 
(试了一下XML::Twig模块,可能是我用的不得法,相同的功能用了190秒)
 
 
 
 

--
您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论组”论坛。
要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com
要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com
若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。

--
您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论组”论坛。
要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com
要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com
若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。

--
您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论组”论坛。
要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com。
要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com。
若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。

没有评论: