in reply to Parsing XML

G'day calebcall,

Using Data::Dump to show the structure of $result:

#!/usr/bin/env perl use strict; use warnings; use XML::Simple; my $xml = XML::Simple->new(); my $result = $xml->XMLin(<<'EOX'); <?xml version="1.0" encoding="utf-8"?> <ApiResponse Status="OK" xmlns="http://api.namecheap.com/xml.response" +> <Errors /> <Warnings /> <RequestedCommand>namecheap.domains.getList</RequestedCommand> <CommandResponse Type="namecheap.domains.getList"> <DomainGetListResult> <Domain ID="8888888" Name="Domain1.com" Expires="03/31/2015"/> <Domain ID="8888889" Name="Domain2.com" Expires="02/25/2015"/> <Domain ID="8888899" Name="Domain3.com" Expires="04/01/2015"/> <Domain ID="8888999" Name="Domain4.com" Expires="05/20/2015"/> </DomainGetListResult> <Paging> <TotalItems>4</TotalItems> <CurrentPage>1</CurrentPage> <PageSize>50</PageSize> </Paging> </CommandResponse> <Server>API02</Server> <GMTTimeDifference>--5:00</GMTTimeDifference> <ExecutionTime>0.008</ExecutionTime> </ApiResponse> EOX use Data::Dump; dd $result;

I get:

{ CommandResponse => { DomainGetListResult => { Domain => [ { Expires => "03/31/2015", ID => 8888888, Name => "Domain1.com +" }, { Expires => "02/25/2015", ID => 8888889, Name => "Domain2.com +" }, { Expires => "04/01/2015", ID => 8888899, Name => "Domain3.com +" }, { Expires => "05/20/2015", ID => 8888999, Name => "Domain4.com +" }, ], }, Paging => { CurrentPage => 1, PageSize => 50, TotalItems => 4 }, Type => "namecheap.domains.getList", }, Errors => {}, ExecutionTime => 0.008, GMTTimeDifference => "--5:00", RequestedCommand => "namecheap.domains.getList", Server => "API02", Status => "OK", Warnings => {}, xmlns => "http://api.namecheap.com/xml.response", }

So, changing your loop to this:

foreach my $domain (@{$result->{CommandResponse}{DomainGetListResult}{ +Domain}}) { print $domain->{Name} . "\n"; }

I get:

Domain1.com Domain2.com Domain3.com Domain4.com

-- Ken