use warnings; use strict; use XML::LibXML; ### https://metacpan.org/pod/distribution/XML-LibXML/LibXML.pod ### https://grantm.github.io/perl-libxml-by-example/basics.html ### https://metacpan.org/pod/distribution/XML-LibXML/lib/XML/LibXML/Element.pod ### https://metacpan.org/pod/distribution/XML-LibXML/lib/XML/LibXML/Node.pod my $dom = XML::LibXML->load_xml(string => <<'EOT'); EOT ### get individual attribute by name: print "\n******* get individual attribute by name: ***********\n"; foreach my $attribute( $dom->findnodes('/test/result_summary/@total_pages') ) { print "total_pages = ", $attribute->to_literal, "\n"; } ### get individual as hash refs: print "\n******* get individual attribute as hash refs: ***********\n"; foreach my $result_sum ( $dom->findnodes('/test/result_summary') ) { print "total_pages = ", $result_sum->{total_pages}, "\n"; } ### get all attributes: print "\n******* get all attributes: ***********\n"; foreach my $attribute( $dom->findnodes('/test/result_summary/@*') ) { print $attribute->nodeName, " = ", $attribute->to_literal, "\n"; } #### ******* get individual attribute by name: *********** total_pages = 3 ******* get individual attribute as hash refs: *********** total_pages = 3 ******* get all attributes: *********** total_records = 594 total_pages = 3 current_page = 1 records_this_page = 250 download_key = xmxnxnxnxnxnxnxnxnx time_start = 2020-02-19 15:50:55 feed_version = 1.44