Schrift
[thread]8938[/thread]

XML::RSS: RSS erweitern?

Leser: 2


<< |< 1 2 >| >> 15 Einträge, 2 Seiten
sid burn
 2007-04-23 17:49
#76134 #76134
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
Hi,
vielleicht ist die Frage auch ganz dumm, oder ich übersehe es einfach.

Ich lasse mir RSS 2.0 Feeds mit XML::RSS Generieren. Allerdiengs möchte ich nun weiteres Attribute zu den einzelnen Items hinzufügen so das am ende ungefähr soetwas heraus kommt:

Code: (dl )
1
2
3
4
5
6
<item>
<title>Hier steht ein Title </title>
<link>http://localhost/link.html </link>
<description>Hier ist eine Beschreibung</description>
<text>blablub</text>
</item>


Wie bekomme ich das <text>blablub</text> zusätzlich hin?

Da XML::RSS auf eine hash Struktur basiert habe ich einfach mal Probiert der add_item Methode noch ein Eintrag

text => "blablub"

hinzuzufügen, allerdiengs hat das keine Auswirkung auf das Generierte RSS. Eine Methode um ein Attribut hinzuzufügen finde ich auch nicht.

Geht das nicht, oder muss ich ein anderes Modul nutzen, oder sogar anfangen mir meine eigene RSS Feed zu schreiben?\n\n

<!--EDIT|sid burn|1177336339-->
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de
esskar
 2007-04-23 18:59
#76135 #76135
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
rss hat ja ein dtd;
muss man sich nicht daran halten?
GwenDragon
 2007-04-23 19:07
#76136 #76136
User since
2005-01-17
14809 Artikel
Admin1
[Homepage]
user image
Wozu willst du das <text> hinzufügen?
Du kannst dich alles, was Text oder HTML ist, in <description> packen!?

Anonsten musst du dich schon an die DTD halten, sonst ist es kein gültiges RSS mehr.
pq
 2007-04-23 20:31
#76137 #76137
User since
2003-08-04
12209 Artikel
Admin1
[Homepage]
user image
alternativ könntest du ausprobieren, das XML mit templates zu genrieren,
z.b. mit CPAN:HTC.
so mache ich das. ich verwende XML::RSS nur zum einlesen von feeds.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
sid burn
 2007-04-24 00:18
#76138 #76138
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
Öhh, gute Frage,
also XML und RSS sind nicht gerade mein Spezialgebiet allerdiengs habe ich folgende Dokumente und Zitate dazu gefunden:

http://cyber.law.harvard.edu/rss/rss.html
Quote
Extending RSS

...

RSS 2.0 adds that capability, following a simple rule. A RSS feed may contain elements not described on this page, only if those elements are defined in a namespace.


Man kann also eigene Attribute hinzufügen, diese Müssen allerdiengs in einem eigenen Namespace liegen.


Dazu habe ich gerade noch folgendes Dokument gefunden:
http://base.google.com/support/bin/answer.py?hl=en&answer=58085
Quote
Section 3: Creating Custom Attributes
...
<g:image_link>http://www.google.com/images/google_sm.gif</g:image_link>
<g:expiration_date>2005-11-15</g:expiration_date>
<g:job_function>Analyst</g:job_function>
...


Man kann das ganze also schon erweitern und es ist weiterhin ein gültiges RSS 2.0

Quote
Wozu willst du das <text> hinzufügen?
Du kannst dich alles, was Text oder HTML ist, in <description> packen!?

Ja das geht, die Sache ist allerdiengs das das RSS sozusagen als Export dient, und eine andere Site diese News 1:1 übernehmen soll, und das ganze über RSS.

Schlagt mich nicht, ich hab mir das nicht ausgedacht! ;)

Ich kann also alles in Description hinein packen, allerdiengs wird es danach wohl schwer alles wieder sauber aus Description heraus zu trennen?

Extra XML Tags mit eigenen Attributen wäre doch Optimal.

Quote
alternativ könntest du ausprobieren, das XML mit templates zu genrieren,
z.b. mit CPAN: HTC.

Darüber habe ich auch schon nachgedacht. Wenn nichts anderes Übrig bleibt muss man das wohl so machen.

Allerdiengs ist es ja gerade die Bequemlichkeit bei XML::RSS sich gerade eben nicht sich sein eigenes Gültiges RSS zusammen zu basteln, sondern das Modul erledigt das ganze für einen.

Das man einfach zwischen RSS 1.0 und 2.0 hin und her schalten kann finde ich auch ganz nett.

Hmm, ich schau nochmal vielleicht findet sich ja noch eine Möglichkeit. Bei XML::RSS ist übrigens eine Methode "append" nicht Dokumentiert. Ich hab mal im Sourcecode herumgeschaut und genau da finden sich Kommentare über Namespaces. Könnte also vielleicht die Lösung des Problemes??? sein.

Naja wenn nichts anderes geht muss ich wohl mit einem Template System Arbeiten.
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de
esskar
 2007-04-24 10:47
#76139 #76139
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
schonmal in die pod geschaut? ;)

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
$rss->add_module(prefix=>'my', uri=>'http://purl.org/my/rss/module/');

$rss->add_item(
title => "xIrc 2.4pre2"
link => "http://freshmeat.net/projects/xirc/",
description => "xIrc is an X11-based IRC client which ...",
my => {
rating => "A+",
category => "X11/IRC",
},
);
sid burn
 2007-04-25 17:49
#76140 #76140
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
[quote=esskar,24.April.2007, 08:47]schonmal in die pod geschaut? ;)

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
$rss->add_module(prefix=>'my', uri=>'http://purl.org/my/rss/module/');

$rss->add_item(
title => "xIrc 2.4pre2"
link => "http://freshmeat.net/projects/xirc/",
description => "xIrc is an X11-based IRC client which ...",
my => {
rating => "A+",
category => "X11/IRC",
},
);
[/quote]
Uhh danke.
Irgendwie konnte ich mit der Methode add_module nichts anfangen. Habe da auch eher an einem Perl Modul gedacht anstatt eine Namensraum im XML. Nun denn.

Ansonsten habe ich noch eine kleine Unstimmigkeit:
Folgendes simples Skript
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
#!/usr/bin/perl
use strict;
use warnings;
use XML::RSS;

my $rss = new XML::RSS (version => '2.0');
$rss->channel(
title => 'freshmeat.net',
link => 'http://freshmeat.net',
description => 'the one-stop-shop for all your Linux software needs',
);

print $rss->as_string;


Als ausgabe bekomme ich folgende RSS
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
<?xml version="1.0" encoding="UTF-8"?>

<rss version="2.0" xmlns:blogChannel="http://backend.userland.com/blogChannelModule">

<channel>
<title>freshmeat.net</title>
<link>http://freshmeat.net</link>
<description>the one-stop-shop for all your Linux software needs</description>

</channel>
</rss>


Kann mir jemand erklären warum die Zeile
Code: (dl )
<rss version="2.0" xmlns:blogChannel="http://backend.userland.com/blogChannelModule">

mit drin steht?

Laut der Datei ist es eine Erweiterung für 3 Attribute. Allerdiengs nutze ich diese noch nichteinmal.
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de
Froschpopo
 2007-04-25 18:18
#76141 #76141
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
huhu

damit kann man OPML-Files (auch xml) ansprechen!
Das Format wird von desktop-Readern gelesen werden was wohl in zukunft von größerer bedeutung sein soll (z.b. Link-Empfehlungen vom Feed-Autor usw).\n\n

<!--EDIT|Froschpopo|1177510767-->
sid burn
 2007-04-25 18:41
#76142 #76142
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
[quote=Froschpopo,25.April.2007, 16:18]huhu

damit kann man OPML-Files (auch xml) ansprechen!
Das Format wird von desktop-Readern gelesen werden was wohl in zukunft von größerer bedeutung sein soll (z.b. Link-Empfehlungen vom Feed-Autor usw).[/quote]
Okay, meine Frage etwas umschreiben.

Wie kriege ich es hin, das diese Ausgabe nicht mehr erscheint?
Es wird da anscheind eine Namespace Datei hinzugefügt die <channel> um 3 zusätzliche Attribute erweitert. Da ich Sie nicht nutze brauche ich das ganze auch nicht, und sehe es nur als Overhead an.

Ansonsten fügt das Modul XML::RSS anscheind diesen Link schon hinzu.
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de
GwenDragon
 2007-04-25 19:44
#76143 #76143
User since
2005-01-17
14809 Artikel
Admin1
[Homepage]
user image
[quote=sid burn,25.04.2007, 16:41]Wie kriege ich es hin, das diese Ausgabe nicht mehr erscheint?[/quote]
Im Modul die Ausgabe des Namespaces auskommentieren. ;)
<< |< 1 2 >| >> 15 Einträge, 2 Seiten



View all threads created 2007-04-23 17:49.