And with
XML::LibXML...
use warnings;
use strict;
use XML::LibXML;
my $parser = new XML::LibXML;
my $tree = $parser->parse_file('hotels.xml');
my $root = $tree->getDocumentElement();
for ($root->getElementsByTagName('hotel')){
my $Hotel_name = $_->getAttribute('name') || $_->getData();
next if ! defined $Hotel_name;
my $Hotel_id = $_->getAttribute('ID');
print "($Hotel_id) " if defined $Hotel_id;
print "$Hotel_name\n";
}
hotels.xml:
<all>
<Hotel>Marriott</Hotel>
<Hotel ID = "123" name = "Savoy"></Hotel>
</all>