ernst kuzorra: Problem: RSS parsen

Beitrag lesen

hallo,

ich habe folgendes problem.

ich bekomme fogende rss datei, auf deren inhalt ich keinen einfluss habe.

  
<?xml version='1.0' encoding='ISO-8859-1' ?>  
<rss version='2.0' xmlns:bb='http://www.blablabla2.de'>  
<channel>  
  <title>der titel</title>  
  <link>http://www.inter.net</link>  
  <description>beschreibung</description>  
  <managingEditor>alle@inter.net</managingEditor>  
  <image>  
    <url>http://www.inter.net/logo.gif</url>  
    <title>logo</title>  
    <link>http://www.inter.net</link>  
    <width>100</width>  
    <height>50</height>  
  </image>  
  <language>de</language>  
  <lastBuildDate>2006-06-29T00:00:00</lastBuildDate>  
  <copyright>none</copyright>  
  
  <item>  
    <title>juhuu</title>  
    <description>die juhuu beschreibung</description>  
    <bb:name>linkliste</bb:name>  
    <bb:einzelteile>  
       <bb:einzelurl>http://url1.de</bb:einzelurl>  
       <bb:einzeltext>der text zu http://url1.de</bb:einzeltext>  
    </bb:einzelteile>  
    <bb:einzelteile>  
       <bb:einzelurl>http://url2.de</bb:einzelurl>  
       <bb:einzeltext>der text zu http://url2.de</bb:einzeltext>  
    </bb:einzelteile>  
    <bb:einzelteile>  
       <bb:einzelurl>http://url3.de</bb:einzelurl>  
       <bb:einzeltext>der text zu http://url3.de</bb:einzeltext>  
    </bb:einzelteile>  
  </item>  
  
</channel>  
</rss>  

via perl moechte ich diese parsen.
ich komme an alle elemente, bis auf die des namespace bb.
was mache ich falsch und kann mir da jemand helfen?

ich habe es mit XML::RSS versucht

  
#!/usr/bin/perl  
use XML::RSS;  
my $rss = new XML::RSS ();  
$rss->parsefile('datei.xml');  
  
print $rss->{items}->[0]->{title}."\n"; #funktioniert  
  
print $rss->{items}->[0]->{bb}->{name}."\n"; #funktioniert nicht  
  
print $rss->{items}->[0]->{bb}->{einzelteile}->[0]->{einzelurl}."\n"; #funktioniert schon gar nicht  

und auch mit XML::RSS::Parser

  
#!/usr/bin/perl  
use XML::RSS::Parser;  
use FileHandle;  
  
 my $p = XML::RSS::Parser->new;  
  
 XML::RSS::Parser->register_ns_prefix('bb','http://irgendeine.url'); #???  
  
 my $fh = FileHandle->new('datei.xml');  
 my $feed = $p->parse_file($fh);  
  
 foreach my $aussen ( $feed->query('//item') ) {  
  
 my $innen=XML::RSS::Parser->ns_qualify($aussen, 'bb'); #???  
  
 print $aussen->query('title')->text_content."\n"; #funktioniert  
  
 print $innen->query('name')->text_content."\n"; #funktioniert nicht  

bei XML::RSS::Parser hab ich ausserdem ueberhaupt keine ahnung, wie ich an das array bb:einzelteile komme.
sowohl XML::RSS als auch XML::RSS::Parser sind auf dem aktuellen stand, aber ich mache wohl jede menge denkfehler.

bin fuer jede hilfe dankbar.