OK. Há um problema bem fundamental aqui. XML é uma linguagem complexa com uma especificação detalhada. Sem bibliotecas isso é difícil - XML é basicamente uma coisa que precisa de uma análise adequada.
Então, por exemplo, usando XML::Twig
com o Perl, você obteria :
use strict;
use warnings;
use XML::Twig;
my $twig = XML::Twig->new()->parsefile ( 'your_xml_file.xml' );
print "id_localisation;id_client;key\n";
foreach my $record ( $twig->root->children('record') ) {
foreach my $data ( $record->children('data') ) {
print join( ";",
$record->first_child_text('id_localisation'),
$data->first_child_text('id_client'),
$data->first_child_text('key'),
),
"\n";
}
}
Você pode achar que XML::Twig
já está disponível - é uma 'instalação padrão' bastante comum. Então, verifique isso primeiro.
Existe um tipo sujo de maneira hacky de fazer isso, mas eu realmente não recomendaria fazer isso. Quero dizer realmente, porque faz código frágil e horrível.
Eu não posso reiterar isso em termos mais strongs. Antes de fazer isso, consulte: link
e: link
Note que você pode instalar módulos perl 'por usuário' em determinadas circunstâncias, o que pode ser particularmente relevante aqui.
E reconheça que seu código viola deliberadamente a especificação XML - tratando-a como um arquivo de texto. Isso é todo tipo de juju ruim, não menos importante, porque existem algumas coisas perfeitamente válidas que você pode fazer em XML, que irão quebrar isso.
No entanto, se você ABSOLUTAMENTE DEVE:
use strict;
use warnings;
open ( my $input_xml, "<", 'your_xml_file.xml' ) or die $!;
my $loca = "";
print "id_localisation;id_client;key\n";
for (<$input>) {
my ($value) = (m/>(\w+)</);
if (m/id_localisation/) { $loca = $value; }
if (m/id_client/) { print "$loca;$value;"; }
if (m/key/) { print "$value\n"; }
}
close($input);
Que imprimirá:
id_localisation;id_client;key
8PJ;50C;C
8PJ;25C;D1
ESP31;70D;D2
ESP31;10D;D3
Se você estiver planejando usar isso para qualquer tipo de função de produção, primeiro cutuque quem não permitir que você instale as coisas e faça com que instalem as bibliotecas de que você precisa. Isso pode soar como trabalho duro, mas confie em mim - não há nada pior do que tentar solucionar algo que misteriosamente quebrou um dia porque o formato de dados upstream mudou (em uma forma válida), mas um script downstream não implementa o padrão.