Perl-скрипт - для чтения многих значений из XML-файла - PullRequest
2 голосов
/ 16 декабря 2010

Как прочитать несколько значений из файла 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>

, и я написал такой код:

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";

Я очень плохо знаком с Perl-сценарием, и мой код может читать только один IP-адрес неоставшиеся 2. так что мне делать в этом случае ??Пожалуйста, ответьте в ближайшее время ... заранее спасибо.

Ответы [ 2 ]

1 голос
/ 16 декабря 2010

У вас уже есть вся необходимая информация в вашем $peermas. Но если вам нужен массив адресов IP, вы можете использовать:

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

Эта карта выполняет итерацию по массиву хешей $peermas->{Appliance} и помещает каждый IP-адрес из него в @massipaddr.

0 голосов
/ 16 декабря 2010

Что-то вроде этого возможно:

#!/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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...