perl基于条件解析xml文件中的特定值

perl基于条件解析xml文件中的特定值,perl,Perl,有人能告诉我如何从xml文件中解析出特定信息吗?我应该用正则表达式吗 我正在使用XML::Simple查看test.XML文件 例如,我想搜索字符串test-out-00000,如果它存在,请给我/打印大小=135860644 数据: 工作perl脚本: use strict; use warnings; use XML::Simple; use Data::Dumper; my $xml = $ARGV [0]; my $data = XMLin($xml); print Dumper(

有人能告诉我如何从xml文件中解析出特定信息吗?我应该用正则表达式吗

我正在使用
XML::Simple
查看test.XML文件

例如,我想搜索字符串
test-out-00000
,如果它存在,请给我/打印
大小
=
135860644

数据:

工作perl脚本:

use strict;
use warnings;
use XML::Simple;
use Data::Dumper;

my $xml = $ARGV [0]; 
my $data = XMLin($xml);
print Dumper( $data );

foreach my $attributes (keys %{$data}){
  print"$attributes:${$data}{$attributes}\n";
}
XML文件test.XML:

<?xml version="1.0" encoding="UTF-8"?>
<listing time="2011-09-30T02:49:39+0000" recursive="no" path="/source/customer/test" exclude="" filter=".*" version="0.20.202.1.1101050227">
<directory path="/source/feeds/customer/test" modified="2011-09-30T02:48:41+0000" accesstime="1970-01-01T00:00:00+0000" permission="drwx------" owner="test_act" group=""/>
<file path="/source/feeds/customer/test/test-out-00000" modified="2011-09-30T02:48:41+0000" accesstime="2011-09-30T02:48:41+0000" size="135860644" replication="3" blocksize="134217728" permission="-rw-------" owner="test_act" group=""/>
</listing>

我假设您总是在文件名中查找文本字符串?如果是,这是一种方法:

use strict;
use warnings;
use XML::Simple;

my $xml = $ARGV [0]; 
my $data = XMLin($xml);

my $size = 0;    

if (exists $data->{file}->{path} and $data->{file}->{path} =~ /test-out-00000/) {
    $size = $data->{file}->{size};
}

如果您的数据采用这种格式,您也可以使用XML::LibXML通过XPATH表达式获取值。

我假设您总是在文件名中查找文本字符串?如果是,这是一种方法:

use strict;
use warnings;
use XML::Simple;

my $xml = $ARGV [0]; 
my $data = XMLin($xml);

my $size = 0;    

if (exists $data->{file}->{path} and $data->{file}->{path} =~ /test-out-00000/) {
    $size = $data->{file}->{size};
}

如果您的数据采用这种格式,那么您也可以使用XML::LibXML通过XPATH表达式获取值。

谢谢。是的,我总是在路径中查找特定的文件名。这对我有用,谢谢。是的,我总是在路径中查找特定的文件名。这对我有用。