2010-12-16 11 views
2

perlスクリプトを使用してXMLファイルから複数の値を読み取る方法は? 私のようなxmlファイルがあります。perlスクリプト - xmlファイルから多くの値を読み取る

<Provisioning> 
<Appliance> 
     <ID>1</ID> 
     <SiteID></SiteID> 
     <IPAddress>10.52.32.230</IPAddress> 
</Appliance> 
<Appliance> 
     <ID>1</ID> 
     <SiteID></SiteID> 
     <IPAddress>10.52.32.530</IPAddress> 
</Appliance> 
<Appliance> 
     <ID>1</ID> 
     <SiteID></SiteID> 
     <IPAddress>10.52.32.730</IPAddress> 
</Appliance>... 
</Provisioning> 

をし、私は次のようなコードを書かれている:私は、スクリプトをperlのために非常に新しいですし、私のコードではなく、残りの2 1つのIPアドレスのみを読むことができます

use XML::Simple; 
use Data::Dumper; 
my $xml = new XML::Simple; 
my $peermas = $xml->XMLin($masapplications); 
print "file contents: $peermas \n"; 
print Dumper($peermas); 
@masipaddr =+ $peermas->{Appliance}->{IPAddress};  #{Provisioning}->{Appliance}->{IPAddress}; 
print "The MAS ip: @masipaddr \n"; 

。 だから私はこの場合何をすべきですか?すぐに返信してください... ありがとうございます。

+0

は通常ラインの下の痛みにつながります。詳細については、「厳密モード」に関するこの記事を参照してください。http://www.perlmonks.org/index.pl?node_id=218480 –

答えて

1

$peermasに必要な情報があります。ハッシュ$peermas->{Appliance}のアレイ上のこの地図反復

my @massipaddr = map { $_->{IPAddress} } @{ $peermas->{Appliance} }; 

をして@massipaddrにそれから各たIPAddressをプッシュ:あなたのIPの配列が必要な場合しかし、あなたが使用する可能性に対処。おそらく、このような

+0

ねえ男...ありがとうたくさん.. :) – SK1

0

何か:任意のオプションを指定せずにXML :: Simpleは使用

#!/usr/bin/perl 

use strict; 
use warnings; 

use XML::Simple; 

my $xml = join '', <DATA>; 

my $peermas = XMLin($xml); 

foreach (@{$peermas->{Appliance}}) { 
    print $_->{IPAddress}. "\n"; 
} 

__DATA__ 
<Provisioning> 
<Appliance> 
     <ID>1</ID> 
     <SiteID></SiteID> 
     <IPAddress>10.52.32.230</IPAddress> 
</Appliance> 
<Appliance> 
     <ID>1</ID> 
     <SiteID></SiteID> 
     <IPAddress>10.52.32.530</IPAddress> 
</Appliance> 
<Appliance> 
     <ID>1</ID> 
     <SiteID></SiteID> 
     <IPAddress>10.52.32.730</IPAddress> 
</Appliance>... 
</Provisioning> 
関連する問題