2008-08-29 8 views
2

XML::Parser::Style::Objectsのマニュアルページは恐ろしいです。単純なこんにちはワールドスタイルのプログラムが本当に役に立ちます。私は似た何かをする必要があり、これまで、通常、私はそれがより良いドキュメントを持っているとする簡単ですXML::Parser::EasyTreeを使用して終了(もちろんのではない実際のコード)XML :: ParserをStyle => 'Objects'と併用する方法

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"; 
} 

答えて

1

はfoo.xmlと

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(); 
} 

...あまり意味がありません...実行されますが、あなたが始めることができますうまくいけば出力を生成し、実際のコードである

<foo> <inner>some text</inner> <inner>something else</inner></foo> 

出力する

>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 

希望に役立ちます。

2

は、私は本当にこのような何かをやってみたかったですつかいます。

非常にお勧めします。ここではすべての場合において

関連する問題