Как обрабатывать XML, который может иметь один или несколько вхождений узла в файле в Perl.
В текущем решении, представленном ниже,
foreach $FileContainerRec (@{$XmlFile->{FileContainer}})
{
$FileContainer = 'C'.$FileContainerCt;
foreach $FileRec (@{$FileContainerRec->{File}})
{
$File = $FileContainer.'file'.$FileCt;
$OutFileName = $FileRec->{OutFileName};
$ActiveIndicator = $FileRec->{ActiveIndicator};
$AuditFlag = $FileRec->{AuditFlag};
$Delimiter = $FileRec->{Delimiter};
@FileDesc=();
@FileDesc=($OutFileName,$ActiveIndicator,$AuditFlag,$Delimiter);
$FileList{$File}=[@FileDesc];
$FileCt++;
}
$FileContainerCt++;
$FileCt=1;
}
Пример ip xml:
<Document>
<FileContainer>
<File>
......
</File>
<File>
......
</File>
</FileContainer>
<FileContainer>
<File>
......
</File>
<File>
......
</File>
</FileContainer>
<Document>
Выход и май могут варьироваться от 0 до n раз.
Фрагмент кода Perl выбрасывает ошибку как «Не ARRAY Referance», когда у нас есть один «FileContainer» или «File» Nodes.