Eu vou oferecer como eu lidaria com isso, porque você ainda não tem nenhuma resposta - eu usaria o excelente módulo XML::Twig
e perl
:
#!/usr/bin/env perl
use strict;
use warnings;
use XML::Twig;
my $twig = XML::Twig -> new -> parsefile ( 'data.xml' );
foreach my $table ( $twig -> get_xpath('//table_name') ) {
print $table -> att('tableid'), " => ", $table -> att('user'), "\n";
}
Isto imprime:
001 => mike
002 => david
O Perl tem uma estrutura de dados embutida chamada hash, que pode atender às suas necessidades também (dependendo do que você está querendo):
#!/usr/bin/env perl
use strict;
use warnings;
use Data::Dumper;
use XML::Twig;
my $twig = XML::Twig -> new -> parse ( \*DATA );
my %table_for;
foreach my $table ( $twig -> get_xpath('//table_name') ) {
my $tableid = $table -> att('tableid');
my $user = $table -> att('user');
$table_for{$user} = $tableid;
}
print Dumper \%table_for;
Você pode iterar chaves em %table_for
(há muitas possibilidades, mas vou precisar de uma ideia do que você deseja expandir nelas)