从perl 中读取xml文件,求助!!!!!!!!!!!!!!!!!!:报错 -问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

从perl 中读取xml文件,求助!!!!!!!!!!!!!!!!!!:报错

kun坤 2020-06-08 18:48:41 68

<?xml version="1.0" encoding="UTF-8"?> <root>  <row>   <field name='CURRENT_DATE'  value='2011-10-25'/>   <field name='GATEWAY_NAME'  value='HESJ-PS-WAP-SYS01'/>   <field name='REQ_NUM'  value='119339386'/>   <field name='TODAY_SUCC_RATE'  value='95.95'/>   <field name='TODAY_TOP_LINE_USER_NUM'  value='412'/>   <field name='GATEWAY_AVG_DELAY'  value='33.03'/>  </row>  <row>   <field name='CURRENT_DATE'  value='2011-10-26'/>   <field name='GATEWAY_NAME'  value='HESJ-PS-WAP-SYS01'/>   <field name='REQ_NUM'  value='3318745'/>   <field name='TODAY_SUCC_RATE'  value='95'/>   <field name='TODAY_TOP_LINE_USER_NUM'  value='127'/>   <field name='GATEWAY_AVG_DELAY'  value='37.56'/>  </row> </root> 如何用perl 从上面的xml 文件中读取数据?

XML 数据格式 Perl
分享到
取消 提交回答
全部回答(1)
  • kun坤
    2020-06-08 18:48:47

    没人知道吗?######open(FH, "XMLfilename"); while(<FH>) {     #do something ,the data in $_ variable; } close(FH);######

    open my ($fh), '<', $xmlfilename or die; while (<$fh>) { #对当前行$_做相关处理 } close(fh);
    ######希望你看一下我的例子 : http://www.hidinga.com/blog/download/?b=code&q=Perl/Syntax/xml

    ######有专业的模块:XML::Simple

    ######楼上说的对,直接API 用Dumper 看下结构 一个个拿出来就行了

    my $xmlfile = dirname($0) . "\testaaa.xml";

    my $xmlcontent = XMLin($xmlfile);
    
    print Dumper($xmlcontent);
    
    
    
    my @lines = @{$xmlcontent->{Baselines}->{Baseline}};
    
    my $a  = @lines;
    
    print($a);
    
    foreach $bases (@lines)
    
    {
    
        print($bases->{deliverer}.":");
    
        print($bases->{content}."\n");
    
        
    
        if($bases->{deliverer} eq "NPF")
    
        {
    
        	print($bases->{content}."\n");
    
        }
    
    }</pre> 
    

     ######

    引用来自“cystcOS”的答案

    楼上说的对,直接API 用 Dumper 看下结构 一个个拿出来就行了
    my $xmlfile = dirname($0) . "\\testaaa.xml";
    
        my $xmlcontent = XMLin($xmlfile);
    
        print Dumper($xmlcontent);
    
        
    
        my @lines = @{$xmlcontent->{Baselines}->{Baseline}};
    
        my $a  = @lines;
    
        print($a);
    
        foreach $bases (@lines)
    
        {
    
            print($bases->{deliverer}.":");
    
            print($bases->{content}."\n");
    
            
    
            if($bases->{deliverer} eq "NPF")
    
            {
    
            	print($bases->{content}."\n");
    
            }
    
        }
      有一行报错: Can't use an undefined value as an ARRAY reference 第九行: my  @lines = @{$xmlcontent->{Baselines}->{Baseline}}; ###### 本地已经有这两个package了。
    0 0
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

推荐文章
相似问题
推荐课程