Schrift
[thread]11911[/thread]

HTML::Parser, verschachtelte elemente auslesen

Leser: 1


<< >> 3 Einträge, 1 Seite
#Kein Kommentar
 2008-05-24 18:11
#110229 #110229
User since
2007-06-09
575 Artikel
HausmeisterIn
[default_avatar]
hallo,

ich würde gerne für ein Tk-HTMLwidget mit CPAN:HTML::Parser verschachelte elemente aus einer html-seite ausfiltern.
folgendes kurzes script funktioniert aber nicht:

Code: (dl )
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
#! /usr/bin/perl
use strict;
use HTML::Parser;

my @links;
my $string = qq~
<small>
<b>fetter text</b> Ein anderer Text
<i>kursiver text</i> text
</small>~;

my $p = HTML::Parser->new();
$p->handler(start => \&start_handler,"tagname,self");
$p->parse($string);

foreach my $link(@links){
print "Tag:\t",$link->[0],"\nText:\t",$link->[1],"\n\n";
}

<>;

sub start_handler{
my $tag = shift;
my $self = shift;
my $text;

$self->handler(text => sub{$text = shift;}, 'text');
$self->handler(end => sub{push(@links,[$tag,$text])});
}


als ausgabe kommt bei mir:
Code: (dl )
1
2
3
4
5
6
7
8
Tag:    b
Text: fetter text

Tag: i
Text: kursiver text

Tag: i
Text: text


erwartet hätte ich eher sowas wie:
Code: (dl )
1
2
3
4
5
6
7
8
Tag:    small
Text: <b>fetter text</b> Ein anderer Text<i>kursiver text</i> text

Tag: b
Text: fetter text

Tag: i
Text: kursiver text


wieso wird <small>...</small> nicht als eigenes tag angesehen?
Gerade weil wir alle in einem Boot sitzen, sollten wir froh sein, dass nicht alle auf unserer Seite sind
Dubu
 2008-05-26 02:13
#110305 #110305
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
Wenn ich das richtig sehe, werden bei jedem Start-Tag die Handler für text- und end-Tags überschrieben. Du "siehst" also immer nur die innersten Tags.
#Kein Kommentar
 2008-05-26 19:39
#110320 #110320
User since
2007-06-09
575 Artikel
HausmeisterIn
[default_avatar]
danke, für die antwort. mein fehler war ein logischer meinererseits...
Gerade weil wir alle in einem Boot sitzen, sollten wir froh sein, dass nicht alle auf unserer Seite sind
<< >> 3 Einträge, 1 Seite



View all threads created 2008-05-24 18:11.