User since
2005-04-13
625
Artikel
BenutzerIn
Hmm, mir werden die Inhalte der Verschachtelung nicht angezeit, jemand ne Idee?
mein Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#! /usr/bin/perl
use strict;
use warnings;
my $string = qq~<div id="bla"><div name="foo"> links </div>text1</div>~;
my $content = new Parse($string);
my $foo = $content->content("bla");
print $foo . "\n";
package Parse;
use vars '$self';
use base 'HTML::Parser';
sub new {
my $class = shift;
$self = { };
$self->{html} = shift;
bless $self, $class;
return $self;
}
sub content {
my $self = shift;
my $name = $self->{name} = shift;
my $p = HTML::Parser->new();
$p->handler(start => \&start_handler,"attr,self");
$p->parse($string);
return $self->{content};
}
sub start_handler{
my $tmp = shift;
my $class = $tmp->{id} || $tmp->{name};
my $html = shift;
my ($return, $text);
if($class eq $self->{name}) {
$html->handler(text => sub{$text = shift;},"dtext");
$html->handler(end => sub{ $self->{content} = $text},"attr");
}
}
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="5065726c2d436f6d6d756e697479"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'
http://perl-tutor.de
User since
2003-08-04
7321
Artikel
ModeratorIn
wieso benutzt du nicht den TreeBuilder?
User since
2005-04-13
625
Artikel
BenutzerIn
Weil ich da, so wie ich es gesehen hab, erst die Ausgabe parsen müsste ?!
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="5065726c2d436f6d6d756e697479"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'
http://perl-tutor.de
User since
2003-08-04
7321
Artikel
ModeratorIn
[quote=J-jayz-Z,30.11.2005, 13:09]Weil ich da, so wie ich es gesehen hab, erst die Ausgabe parsen müsste ?![/quote]
nein...
schau dir doch mal das Interface an... mit dem Dump wollte ich nur aufzeigen, dass das Modul schon kann...
User since
2005-04-13
625
Artikel
BenutzerIn
Mit TreeBuilder komm ich gar nicht klar...
Aber es muss doch ne Möglichkeit geben, HTML::Parser zu sagen, das verschachtelung auch erlaubt ist ... ?!
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="5065726c2d436f6d6d756e697479"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'
http://perl-tutor.de
User since
2003-11-28
3645
Artikel
ModeratorIn
Wo liegen die Probleme mit TreeBuilder? Das Modul benutzt ja einen eher DOM+XPath-ähnlichen Ansatz, welches ich wesentlich einfacher als das event-basierte HTML::Parser finde.