Perl script zum Parsen von XML mit XML::LibXML;
Ich denke, dies ist ein sehr einfaches Problem, aber ich kann nicht herausfinden, trotz vieler Recherchen.
Ich versuche, die folgenden XML-drucken etwas ähnliches zu-TAG=WERT, so dass ich schreiben kann, diese in eine CSV-Datei. Das problem sind die tags nicht immer das gleiche für jede Probe. Ich kann nicht scheinen, um herauszufinden, wie man den eigentlichen tag-Namen. Jede Hilfe zu schätzen!!!
XML-Datei -
<Statistics>
<Stats>
<Sample>
<Name>System1</Name>
<Type>IBM</Type>
<Memory>2GB</Memory>
<StartTime>2012-04-26T14:30:01Z</StartTime>
<EndTime>2012-04-26T14:45:01Z</EndTime>
</Sample>
<Sample>
<Name>System2</Name>
<Type>Intel</Type>
<Disks>2</Disks>
<StartTime>2012-04-26T15:30:01Z</StartTime>
<EndTime>2012-04-26T15:45:01Z</EndTime>
<Video>1</Video>
</Sample>
</Stats>
</Statistics>
Skript -
#!/usr/bin/perl
use XML::LibXML;
$filename = "data.xml";
my $parser = XML::LibXML->new();
my $xmldoc = $parser->parse_file($filename);
for my $sample ($xmldoc->findnodes('/Statistics/Stats/Sample')) {
print $sample->nodeName(), ": ", $sample->textContent(), "\n";
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie die richtige Methode zum abrufen der tag-Namen, Sie brauchen nur eine extra Schleife zu laufen, durch den tags, die innerhalb jedes
<sample>
:Bearbeiten: ich habe nun ein tutorial erstellt, Website namens Perl XML::LibXML durch Beispiel die Antworten genau diese Art von Frage stellen.
Benötigen Sie zum Durchlaufen der Kinder der Stichprobe-Knoten,
zeigen,
foreach my $child ($sample->findnodes('*')) {