Wie parse ich eine xml, die möglicherweise null bis N Knoten mit perl hat?

335
Shon Cleneeto

Wie gehe ich mit einem XML-Code um, bei dem ein oder mehrere Knoten in der Datei in Perl vorkommen?

In der unten bereitgestellten aktuellen Lösung

foreach $FileContainerRec (@{$XmlFile->}) { $FileContainer = 'C'.$FileContainerCt; foreach $FileRec (@{$FileContainerRec->})  { $File = $FileContainer.'file'.$FileCt; $OutFileName = $FileRec->; $ActiveIndicator = $FileRec->; $AuditFlag = $FileRec->; $Delimiter = $FileRec->; @FileDesc=(); @FileDesc=($OutFileName,$ActiveIndicator,$AuditFlag,$Delimiter); $FileList{$File}=[@FileDesc]; $FileCt++; } $FileContainerCt++; $FileCt=1; }  

Beispiel-IP-XML:

<Document> <FileContainer> <File> ...... </File> <File> ...... </File> </FileContainer> <FileContainer> <File> ...... </File> <File> ...... </File> </FileContainer> <Document> 

Die Sicherheit von und Mai kann zwischen 0 und n betragen.

Das Perl-Code-Snippet wirft einen Fehler wie "Not a ARRAY Referance" aus, wenn wir entweder einen 'FileContainer' - oder 'File'-Knoten haben.

1
Gibt es einen Grund, warum Sie keine der vielen bereits vorhandenen XML-Parsing-Bibliotheken verwenden? mtak vor 7 Jahren 1
Perl-Fragen beziehen sich auf das Thema [su]. DavidPostill vor 7 Jahren 0
Sie sollten `XML :: Simple` vermeiden. Die [Dokumentation für das Modul selbst sagt dies] (https://metacpan.org/pod/XML::Simple): * Von der Verwendung dieses Moduls in neuem Code wird abgeraten. Andere Module sind verfügbar, die einfachere und konsistente Schnittstellen bieten. Insbesondere ist "XML :: LibXML" sehr zu empfehlen, und "XML :: Twig" ist eine ausgezeichnete Alternative. * Wenn Sie Ihre Frage bearbeiten, um einige verwendbare XML-Daten anzuzeigen, schreibe ich Beispielcode. Borodin vor 7 Jahren 0
@mtak: * "Gibt es einen Grund, warum Sie nicht eine der vielen XML-Parsing-Bibliotheken verwenden, die bereits verfügbar sind?" * Es sieht für mich so aus, als würde das OP `XML :: Simple` verwenden. Borodin vor 7 Jahren 0
Wir können Ihnen nicht wirklich helfen, ohne eine Beschreibung des Problems und einige gültige XML-Daten. *** Wenn Sie Ihre Frage bearbeiten, um einige verwendbare XML-Daten anzuzeigen, schreibe ich Beispielcode. *** Borodin vor 7 Jahren 0

0 Antworten auf die Frage