Une partie du XML ressemble à ceci:XML :: Twig ignore certains éléments?
<ipcEntry kind="1" symbol="A01B0013080000" ipcLevel="A" entryType="K" lang="EN" nocore="yes">
<textBody>
<title>
<titlePart>
<text>for working subsoil</text>
</titlePart>
</title>
</textBody>
<ipcEntry kind="2" symbol="A01B0013100000" ipcLevel="A" entryType="K" lang="EN" nocore="yes">
<textBody>
<title>
<titlePart>
<text>Special implements for lifting subsoil layers</text>
</titlePart>
</title>
</textBody>
<ipcEntry kind="3" symbol="A01B0013120000" ipcLevel="A" entryType="K" lang="EN" nocore="yes">
<textBody>
<title>
<titlePart>
<text>Means for distributing the layers on the surface</text>
</titlePart>
</title>
</textBody>
</ipcEntry>
</ipcEntry>
</ipcEntry>
Mon code est:
#!/usr/bin/perl
use strict;
use warnings;
use XML::Twig;
use Data::Dumper;
my $twig_handlers = { 'ipcEntry' => \&ipcEntrySub };
my $file = 'A01B.xml';
my $twig= new XML::Twig(twig_handlers => $twig_handlers);
$twig->parsefile($file);
#$twig->print;
sub ipcEntrySub {
my ($twig_obj, $element) = @_;
print $element->{'att'}->{'symbol'} . "\n";
print "Kind: $element->{'att'}->{'kind'}\n";
print $element->text . "\n";
print "###########################################\n";
$twig_obj->purge;
}
semble que je ne peux pas obtenir le texte: <text>Special implements for lifting subsoil layers</text>
Je suppose que sa cause <ipcEntry kind="2" symbol="A01B0013100000" ipcLevel="A" entryType="K" lang="EN" nocore="yes">
a un autre sous ipcEntry.
Je peux obtenir <text>Means for distributing the layers on the surface</text>
.
qu'est-ce que je fais mal ici?
Merci,
Que voulez-vous exactement que la sortie soit? –
fondamentalement, pour imprimer tous les éléments là, avec les attributs de chacun –
snoofkin
Lorsque vous purgez, vous perdez tous les éléments avant le courant. Vous gardez simplement les parents de l'élément, vide, c'est-à-dire que vous pouvez toujours accéder à leurs attributs, mais tout leur contenu est perdu. Donc en effet supprimer est ce que vous voulez ici. – mirod