Я анализирую этот XML файл, используя XML::Parser
<SOURCE>
<FILTER>
<FILTER_CODE_SHELL append="true">
ECHO HELLO
</FILTER_CODE_SHELL>
</FILTER>
</SOURCE>
в perl У меня есть это:
$p = new XML::Parser(ErrorContext => 2,
Handlers => {#Init => \&handle_init,
#Start => \&handle_start,
Char => \&handle_char,
#End => \&handle_end,
#Proc => \&handle_proc,
#Final => \&handle_final
});
Я просто комментирую всех Гандлеров, ожидающих Char ,
это подпрограмма handle_char:
sub handle_char {
my ($p, $data) = @_;
if (uc($p->current_element) eq 'FILTER_CODE_SHELL') {
$FILTER_CODE .= $data;
print STDOUT $p->current_element."\n";
}
}
Проблема заключается в том, что я печатаю текущий_элемент, который он печатает FILTER_CODE_SHELL
4 раза!
Print log Результаты:
Date : 18/03/2020 11:40:32 >> FILTER_CODE_SHELL
Date : 18/03/2020 11:40:32 >> FILTER_CODE_SHELL
Date : 18/03/2020 11:40:32 >> FILTER_CODE_SHELL
Date : 18/03/2020 11:40:32 >> FILTER_CODE_SHELL