Comment utilisez-vous XML :: Parser avec Style => 'Objets'
Question
La page de manuel pour XML::Parser::Style::Objects
c'est horrible.Un simple programme de style Hello World serait vraiment utile.
Je voulais vraiment faire quelque chose comme ça :(pas de vrai code bien sûr)
use XML::Parser;
my $p = XML::Parser->new(Style => 'Objects', Pkg => 'MyNode');
my $tree = $p->parsefile('foo.xml');
$tree->doSomething();
MyNode::doSomething() {
my $self = shift;
print "This is a normal node";
for $kid ($self->Kids)
{
$kid->doSomething();
}
}
MyNode::special::doSomething() {
my $self = shift;
print "This is a special node";
}
La solution
Dans tous les cas, voici le code réel qui s'exécute...ne veut pas dire grand-chose mais produit un résultat et, espérons-le, pourra vous aider à démarrer...
use XML::Parser;
package MyNode::inner;
sub doSomething {
my $self = shift;
print "This is an inner node containing : ";
print $self->{Kids}->[0]->{Text};
print "\n";
}
package MyNode::Characters;
sub doSomething {}
package MyNode::foo;
sub doSomething {
my $self = shift;
print "This is an external node\n";
for $kid (@ { $self->{Kids} }) {
$kid->doSomething();
}
}
package main;
my $p = XML::Parser->new(Style => 'Objects', Pkg => 'MyNode');
my $tree = $p->parsefile('foo.xml');
for (@$tree) {
$_->doSomething();
}
avec foo.xml
<foo> <inner>some text</inner> <inner>something else</inner></foo>
qui produit
>perl -w "tree.pl"
This is an external node
This is an inner node containing : some text
This is an inner node containing : something else
J'espère que cela pourra aider.
Autres conseils
Chaque fois que j'ai besoin de faire quelque chose de similaire, je finis généralement par utiliser XML :: Parser :: EasyTree il a une meilleure documentation et est plus simple à utiliser.
Je le recommande fortement.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow