# RSS Feed



## dynamosympathisant86 (15. Aug 2006)

Hallo,
ich arbeite mit ROME und möchte einen RSS Feed erstellen. Ich habe mit Hilfe der Tutorial Seite schon einen Testfeed erstellt und das klappt auch wunderbar. Doch wie kann ich nun den "Elementen" einen anderen, von mir gewählten, Namespace zuweisen??? Die arbeiten dort nur mit dem Namespace "link" und "title", doch ich benötige eigene Namespaces. Wo kann ich die denn definieren und mit in den XML-Baum einbauen??


----------



## Guest (15. Aug 2006)

Gibts hier denn keine Hilfe für mein Problem???


----------



## KSG9|sebastian (15. Aug 2006)

Bei nem Modul kannst du nen eigenen Namespace zurückgeben. Ob das hilft weiß ich nicht und ich bin auch nicht motiviert dannach zu suchen, denn google kannste glaub selber bedienen.

http://trac.feedtree.net/project/fi...e/rome/module/FeedTreeModuleParser.java?rev=1

Da ist irgendein Parser..wie gesagt..ob's hilft weiß ich nicht


----------



## Guest (15. Aug 2006)

Bei google find ich eben nix dazu. Ich muss in das XML-Dokument irgendwie weitere Elemente hineinbekommen. Dieses ROME Parser hab ich schon. Aber wie kann ich einem item zum Beispiel noch das "Kind" Höhe oder Breite geben?? Es gibt ja schon "link" oder "title" Das muss ich halt nur noch erweitern...
Ich wäre hocherfreut, wenn du dich dazu motivieren könntest, mir in dieser Angelegenheit zu helfen!


----------



## AlArenal (15. Aug 2006)

Welchen Sinn machen Angaben wie "Höhe" und "Breite" in einem RSS-Feed?


----------



## KSG9|sebastian (15. Aug 2006)

AlArenal hat gesagt.:
			
		

> Welchen Sinn machen Angaben wie "Höhe" und "Breite" in einem RSS-Feed?



DAS ist ne gute Frage 
Ich hab nicht die Zeit mich in Rome einzulesen. Desweiteren gibst du recht dürftige Angaben und mein Kaffeesatz gibt mir keine vernünftige Vorhersage was du genau brauchst. 
Und was die Höhe und Breite in nem RSS soll raff ich auch nicht.
Dann hab ich keine Ahnung was du genau erstellen willst, bzw. mit welchen Daten du nen Feed erzeugen willst (willst du das wirklich?)

Edit: Wenn du "irgendwelche" Elemente hinzufügst isses nicht mehr RSS0.9/1.0/2.0 konform, und die Infos liest dir eh kein RSS-Reader aus, da die Dinger sich an den Standart halten und nur Felder wie Datum, Link u.s.w. auslesen.


----------



## Gast (15. Aug 2006)

Ob ich das will, ist ne andere Sache - ich muss! Ich bin komplett ne auf dem Gebiet und muss es mir beibringen, nur ich komm einfach nciht weiter. In dem Feed soll die URL zu einem Bild angegeben sein ("link") und die Höhe und Breite dessen. Was brauchst du denn für Angaben???
Ich blick nicht durch...sry


----------



## KSG9|sebastian (15. Aug 2006)

Ne Beschreibung von dem was du tun willst, ungefähr folgendes wäre interessant

- Eingabedaten
 1. Mit welchen Daten erzeugst du nen Feed
 2. Woher kommen die Daten
 3. Wie liegen die Daten vor (Javaobjekte, Dateien .. ?)
- Verarbeitung
 1. Mit was arbeitest du?
 2. 
- Ausgabe
 1. Was willst du erzeugen ?
 2. Wie soll das XML aussehen (kleines Beispiel)
 3. Für was willst du das XML verwenden ?

.... dann mal Code posten damit wir auch sehen was du schon getan hast...


----------



## AlArenal (15. Aug 2006)

Vielleicht solltest du dir mal nen RSS-Feed als Klartext ansehen. Am ehesten einen mit nem Bild.. dann dürfte dir ein Licht aufgehen...

http://feeds.feedburner.com/PitosBlog


----------



## Gast (15. Aug 2006)

Noch wird gar kein Feed erzeugt. Ich weiß es auch nicht, wie das geschehen soll.
Die Daten liegen insoweit vor, dass ich sie von Hand eingebe. Einfach nur zum Testen!
Ich arbeite mit ROME. 
Ich will ein XML erzeugen.
Code:

```
public class Start
{
  public static void main(String[] args) throws Throwable
  {
    SyndFeed feed = new SyndFeedImpl();
    DateFormat dateParser = new SimpleDateFormat("yyyy-MM-dd");
    feed.setFeedType("rss_1.0");

    feed.setTitle("Sample Feed (created with ROME)");
    feed.setLink("http://rome.dev.java.net");
    feed.setDescription("This feed has been created using ROME (Java syndication utilities)");
    
    List entries = new ArrayList();
    SyndEntry entry;
    SyndContent description;
    SyndContent height;

    entry = new SyndEntryImpl();
    entry.setTitle("ROME v1.0");
    entry.setLink("http://wiki.java.net/bin/view/Javawsxml/Rome05");
    entry.setAuthor("Peter Müller");
    
    description = new SyndContentImpl();
    description.setType("text/plain");
    description.setValue("Initial release of ROME");
    entry.setDescription(description);
    entries.add(entry);
        
    feed.setEntries(entries);

    SyndFeedOutput output = new SyndFeedOutput();
    StringWriter s = new StringWriter();
    output.output(feed,s);
    
    System.out.println(s.getBuffer());
  }
}
```
die restlichen Klassen sind im ROME vorhanden, aber um das erweitern zu können, muss ich die sicherlich anpassen..Am besten, du nimmst das ROME zur Hand..ich kann ja hier nicht alle Klassen posten... http://wiki.java.net/bin/view/Javawsxml/Rome05


----------



## KSG9|sebastian (15. Aug 2006)

Ok, ums kurz zu machen:

Du willst mit ner RSS Library nen Feed erzeugen der nicht XML-konform ist.
Das ist wie wenn ich mit ner DOM-Api ne XML-Datei erzeugen will die 18 Root-Elemente hat.
Bist du dir sicher dass ROME das richtige für dich ist? Ich würd eher mal sagen dass du JDOM o.ä. zur Hand nimmst. Damit erzeugst du dann den XML-Baum und kannst beliebig neue Elemente einbauen. www.jdom.org

Ansonsten könntest du auch die Klasse SyndEntry erweitern und noch ein paar Attribute wie height, width, picture hinzufügen.


----------



## Guest (15. Aug 2006)

AlArenal hat gesagt.:
			
		

> Vielleicht solltest du dir mal nen RSS-Feed als Klartext ansehen. Am ehesten einen mit nem Bild.. dann dürfte dir ein Licht aufgehen...
> 
> http://feeds.feedburner.com/PitosBlog


Genau so soll mein Feed aussehen..nur halt mit anderen Angaben wie eben die URL zu einem Bild und die Höhe und Breite dessen. Das soll ein item sein...
wie wurde der Feed erstellt. Gibt es dafür gute Beispiele im Netz??


----------



## AlArenal (15. Aug 2006)

Gast hat gesagt.:
			
		

> Noch wird gar kein Feed erzeugt. Ich weiß es auch nicht, wie das geschehen soll.
> Die Daten liegen insoweit vor, dass ich sie von Hand eingebe. Einfach nur zum Testen!
> Ich arbeite mit ROME.
> Ich will ein XML erzeugen.



Hallo Meister der Indifferenz! 

Willst du nun einfach nur XML erzeugen, oder wahrhaftig einen RSS-Feed? Und was willst du dann damit machen? Ist ja schön, dass du Code postest, aber den Rest der Fragen hättest du ruhig auch beantworten können. Wir haben nämlich alle noch nicht die neue Kristallkugel 5.0 geliefert bekommen und zum jetzigen Zeitpunkt ist noch überhaupt nicht klar, ob du nicht völlig auf dem Holzweg bist.


----------



## Guest (15. Aug 2006)

KSG9|sebastian hat gesagt.:
			
		

> Bist du dir sicher dass ROME das richtige für dich ist?


Ich muss es benutzen...


			
				KSG9|sebastian hat gesagt.:
			
		

> Ansonsten könntest du auch die Klasse SyndEntry erweitern und noch ein paar Attribute wie height, width, picture hinzufügen.



Wie kann ich denn die Klasse SyndEntry erweitern? Ok, ein paar globale Variablen dazu machen und Getter und Setter. Aber deswegen bekomm ich die noch nciht in mein XML-Baum rein!?


----------



## AlArenal (15. Aug 2006)

Anonymous hat gesagt.:
			
		

> AlArenal hat gesagt.:
> 
> 
> 
> ...



Dazu gibts sicher 1001 Beispiele für jede (un)mögliche Sprache. Pito Salas ist, wenn mich meine kleinen grauen nicht täuschen, auch der Autor von ROME (und Blogbridge). Fällt dir so gar nix auf, wenn du dir den Feed anschaust? Kommt dir nichts bekannt vor? Diese "

" und "<img>" und "<a>"....?


----------



## Guest (15. Aug 2006)

Ich möchte einen FEED erzeugen, nicht nur einen XML-Baum. Allerdings ist doch der XML Baum quasi der Feed...bzw. das xml Dokument ist der Feed...


----------



## KSG9|sebastian (15. Aug 2006)

https://rome.dev.java.net/apidocs/0_5/com/sun/syndication/io/package-summary.html

Da sind die ganzen Outputter drin. Wenn du da WiredFeedGenerator#generate überschreibst kannst du (wie oben erwähnt) deine eine Feed-XML generieren.
Vorgehen:

- SyndFeedEntry überschreiben und die benötiten Attribute hinzufügen
- WiredFeedGenerator erweitern und die Methode generate überschreiben
- Dort drin dann abfragen ob es sich um dein eigenes SyndFeedEntry-Objekt handelt. Wenn ja dann halt noch die restlichen Elemente hinzufügen


----------



## Guest (15. Aug 2006)

AlArenal hat gesagt.:
			
		

> Kommt dir nichts bekannt vor? Diese "
> 
> " und "<img>" und "<a>"....?


Da steht nicht eins von den genannten 3 tags...


----------



## Guest (15. Aug 2006)

KSG9|sebastian hat gesagt.:
			
		

> https://rome.dev.java.net/apidocs/0_5/com/sun/syndication/io/package-summary.html
> 
> Da sind die ganzen Outputter drin. Wenn du da WiredFeedGenerator#generate überschreibst kannst du (wie oben erwähnt) deine eine Feed-XML generieren.
> Vorgehen:
> ...



Das ist doch schon mal eine Antwort. Mal schauen, ob ich hinbekomme. Wenn nicht, meld ich mich nochmal...


----------



## SamHotte (15. Aug 2006)

Och ... ich find schon, dass da jede Menge dieser Tags drinstehen ... schau halt mal in die 'description' rein (oder mach Strg-F) ...


----------



## AlArenal (15. Aug 2006)

Anonymous hat gesagt.:
			
		

> AlArenal hat gesagt.:
> 
> 
> 
> ...



Da stehen sogar noch mehr.. ul, li, div, ...

Kann heutzutage keiner mehr HTML?


----------



## KSG9|sebastian (15. Aug 2006)

1. hast du immernoch nich alle Fragen beantwortet (besser: Du hast 2 beantwortet, 8 weggelassen)

2. hab ich immernoch keinen Plan was du genau hast, was du tun musst und was dass ergebnis sein soll


----------



## Guest (15. Aug 2006)

Ja, gefunden! ;-) Aber was soll mir das jetzt sagen??? Wie gesagt, sry, dass ich davon noch keine Peilung habe, aber das ist absolut neu das Thema für mich!

@ Sebastian: Meinst du mit SyndFeedEntry überschreiben die SyndFeed Klasse?? Denn SyndFeedEntry gibt es nicht!?


----------



## Guest (15. Aug 2006)

Das Ergebnis soll einfach ein mit ROME erstelltes Feed-XML sein, dass die URL eines Bildes und Höhe sowie Breite enthäkt...


----------



## KSG9|sebastian (15. Aug 2006)

die Klasse SyndEntry überschreiben


```
class IchVerstosseGegenJedenRssStandart extends SyndEntry{
   private String height;
   private String width;

   // getter und setter
}
```
Dann überschriebst du noch den WiredFeedWriter oder wie das Ding heißt. Dort dann die generate-Methode überschreiben.
Schau dir einfach mal die Sourcen von dem Teil an.


----------



## AlArenal (15. Aug 2006)

Anonymous hat gesagt.:
			
		

> Ja, gefunden! ;-) Aber was soll mir das jetzt sagen??? Wie gesagt, sry, dass ich davon noch keine Peilung habe, aber das ist absolut neu das Thema für mich!



Das bedeutet schlichtweg, dass RSS-Feeds (dürfte auch für Atom gelten) als Content neben einfachem Fließtext auch einfaches HTML beinhalten können. Schon beantwortet sich die Frage mit irgendwelchen Bildchen ganz von selbst - vorausgesetzt HTML ist für einen mehr als eine Aneinanderreihung von 4 Großbuchstaben.


----------



## Guest (15. Aug 2006)

AlArenal hat gesagt.:
			
		

> vorausgesetzt HTML ist für einen mehr als eine Aneinanderreihung von 4 Großbuchstaben.


Für einen Anwendungsentwickler in Ausbildung sollte das schon so sein.......


----------



## Guest (16. Aug 2006)

In folgendem Beispiel von der ROME-Seite wurden doch auch weitere Elemente hinzugefügt:

<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
         xmlns="http://purl.org/rss/1.0/"
         xmlns:sample="http://rome.dev.java.net/module/sample/1.0">
    <channel>
        <title>RSS 1.0 Feed with Sample Module</title>
        <link>http://rome.dev.java.net</link>
        <description>This is a feed showing how to use a custom module with ROME</description>
        <items>
            <rdf:Seq>
                <rdf:li resource="item01" />
                <rdf:li resource="item02" />
            </rdf:Seq>
        </items>
* <sample:bar>*Channel bar</sample:bar>
* <sample:foo>*Channel first foo</sample:foo>
*<sample:foo>*Channel second foo</sample:foo>
    </channel>
    <item rdf:about="item01">
        <title>Title of Item 01</title>
        <link>http://rome.dev.java.net/item01</link>
        <description>Item 01 does not have Sample module data</description>
    </item>
    <item rdf:about="item02">
        <title>Title of Item 02</title>
        <link>http://rome.dev.java.net/item02</link>
        <description>Item 02 has Sample module data</description>
        <sample:bar>Item 02 bar</sample:bar>
        <sample:foo>Item 02 only foo</sample:foo>
        <sample:date>2004-07-27T00:00+00:00</sample:date>
    </item>
</rdf:RDF>

Wie kann ich das erreichen? Und das verstößt doch sicher auch nicht gegen diverse Standards, oder??


----------



## Guest (16. Aug 2006)

Jungs, ich brauch eure Hilfe!!!


----------



## Guest (16. Aug 2006)

Keiner da? :-(


----------



## KSG9|sebastian (16. Aug 2006)

Dann schau dir an wie die es gemacht haben!


----------



## Guest (16. Aug 2006)

Das hab ich schon getan, aber ich werde daraus einfach nicht schlau. Deswegen frag ich ja...welche Methode muss ich denn aufrufen, damit ich die "bar" und "foo" Elemente einfügen kann?
Die haben nur ein Beispiel, aber nirgends steht, was ich aufrufen muss...
Schau dir das mal an: SampleModule


----------



## Guest (16. Aug 2006)

Und,, blickst du durch, wie das gehen soll???


----------



## KSG9|sebastian (17. Aug 2006)

```
public class SampleModuleGenerator  implements ModuleGenerator {
    private static final Namespace SAMPLE_NS  = Namespace.getNamespace("sample", SampleModule.URI);

    public String getNamespaceUri() {
        return SampleModule.URI;
    }

    private static final Set NAMESPACES;

    static {
        Set nss = new HashSet();
        nss.add(SAMPLE_NS);
        NAMESPACES = Collections.unmodifiableSet(nss);
    }

    public Set getNamespaces() {
        return NAMESPACES;
    }

    public void generate(Module module, Element element) {

        // this is not necessary, it is done to avoid the namespace definition in every item.
        Element root = element;
        while (root.getParent()!=null && root.getParent() instanceof Element) {
            root = (Element) element.getParent();
        }
        root.addNamespaceDeclaration(SAMPLE_NS);

        SampleModuleI fm = (SampleModule)module;
        if (fm.getBar() != null) {
            element.addContent(generateSimpleElement("bar", fm.getBar()));
        }
        List foos = fm.getFoos();
        for (int i = 0; i < foos.size(); i++) {
            element.addContent(generateSimpleElement("foo",foos.get(i).toString()));
        }
        if (fm.getDate() != null) {
            element.addContent(generateSimpleElement("date", DateParser.formatW3CDateTime(fm.getDate())));
        }
    }

    protected Element generateSimpleElement(String name, String value)  {
        Element element = new Element(name, SAMPLE_NS);
        element.addContent(value);
        return element;
    }

}
```

Jetzt darfst du raten was diese Klasse macht......Namespace, foo, bar, date..na dämmerts? RICHTIG, damit wird die XML-Datei generiert
Und wenn du das Teil nimmst kannst du anstatt foo, bar, date, simple eben picuture, height, width u.s.w. reinschreiben.


----------



## Guest (17. Aug 2006)

Kann den jemand was mit dieser Anleitung anfangen? Ich werde da nicht schlau draus! Anleitung zum Erstellen eigener Elemente


----------



## Guest (17. Aug 2006)

[quote="KSG9|sebastian]Jetzt darfst du raten was diese Klasse macht......Namespace, foo, bar, date..na dämmerts? RICHTIG, damit wird die XML-Datei generiert
Und wenn du das Teil nimmst kannst du anstatt foo, bar, date, simple eben picuture, height, width u.s.w. reinschreiben.[/quote]

Das ist ja vollkommen richtig. Aber in meiner xml-Datei werden keine foo und bar Elemente angezeigt. Welche Methode muss ich denn beim Erstellen des RDF-aufrufen??

Mein rdf wird zur Zeit so erstellt:


```
public class CreateNewBeans
{
  public static void main(String[] args) throws Throwable
  {
    SyndFeed feed = new SyndFeedImpl();
    DateFormat dateParser = new SimpleDateFormat("yyyy-MM-dd");
    feed.setFeedType("rss_1.0");
    
    feed.setTitle("Sample Feed (created with ROME)");
    feed.setLink("http://rome.dev.java.net");
    feed.setDescription("This feed has been created using ROME (Java syndication utilities");

    List entries = new ArrayList();
    SyndEntry entry;
    SyndContent description;

    entry = new SyndEntryImpl();
    entry.setTitle("ROME v1.0");
    entry.setLink("http://wiki.java.net/bin/view/Javawsxml/Rome01");
    description = new SyndContentImpl();
    description.setType("text/plain");
    description.setValue("Initial release of ROME");
    entry.setDescription(description);
    entries.add(entry);
    
    feed.setEntries(entries);

    SyndFeedOutput output = new SyndFeedOutput();
    StringWriter s = new StringWriter();
    output.output(feed,s);
    
    System.out.println(s.getBuffer());
  }
}
```

Und meine Ausgabe ist folgende:


```
<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns="http://purl.org/rss/1.0/"
xmlns:sample="http://rome.dev.java.net/module/sample/1.0"
xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel rdf:about="http://rome.dev.java.net">
    <title>Sample Feed (created with ROME)</title>
    <link>http://rome.dev.java.net</link>
    <description>This feed has been created using ROME (Java syndication utilities</description>
    <items>
      <rdf:Seq>
        <rdf:li resource="http://wiki.java.net/bin/view/Javawsxml/Rome01" />
      </rdf:Seq>
    </items>
  </channel>
  <item rdf:about="http://wiki.java.net/bin/view/Javawsxml/Rome01">
    <title>ROME v1.0</title>
    <link>http://wiki.java.net/bin/view/Javawsxml/Rome01</link>
    <description>Initial release of ROME</description>
  </item>
</rdf:RDF>
```

Aber wie bekomme ich die foo und bar Elemente da rein???


----------



## AlArenal (17. Aug 2006)

Liest du eigentlich auch, was Sebastian da schreibt?


----------



## dynamosympathisant86 (17. Aug 2006)

Natürlich, aber diese Klasse beschreibt doch nur die Elemente, die später in dem xml-Baum stehen sollen. Aber in dieser Klasse gibt es doch keine main-Methode - das bedeutet für mich, dass ich eine weitere Klasse brauche (mit main-Methode), welche dann eine Methode aus der SamleModuleGenerator aufruft und somit das xml erstellt. Allerdings hab ich keine Ahnung, welche Methode ich aufrufen muss und was ich als Parameter übergeben muss??


----------



## KSG9|sebastian (17. Aug 2006)

L-E-S-E-N ?!?!??!?!?!?!?!?!?!


```
class KomischerFeed extends SyndFeed{
   private String pic;
   private int width;
   private int height;
}
class KomischesEntry extends SyndFeedEntry{

}
```

Ich glaube dass du Rome völlig zweckentfremdest

zudem weiß ich immernoch nicht 

1. welche Daten du bekommst
2. was du erzeugen wollst
3. was mit dem Erzeugten getan werden soll
4. ob die lesen kannst (das Tutorial das du verlinkt hast beschreibt eigentlich ALLES)


----------



## dynamosympathisant86 (17. Aug 2006)

1. Ich bekomme zur Zeit noch gar keine Daten. Das heißt, ich geb sie selber von Hand ein und lerne somit die Geschichte mit RSS.
2. Ich möchte ein xml Dokument erzeugen, welches einen link, die Höhenangabe und die Breitenangabe eines Bildes beinhaltet.
3. Das erzeugt xml soll später als Feed genutzt werden bzw. in einen anderen Feed eingebunden werden.
4. Lesen kann ich. Das Tutorial beschreibt nicht alles, sonst würde ich nicht fragen. Unter dem Punkt, wie ich die Sample Klassen nutzen kann steht nur, das ich eine getModule Methode aufrufen muss. Mehr nicht. Und RSS sich selber beizubringen ist nicht das einfachste.

Ein Forum ist ja eigentlich da, um anderen zu helfen...

Also ich erstelle mir eine Klasse und lasse sie von SyndFeed erben. Darin definiere ich meine Höhe und Breite und erstelle in der Klasse nur die Get und Set Methoden für die globalen Variablen. Danach eine Klasse für Entry, die von SyndFeedEntry erbt und dort sag ich nur, setWidth(120) zum beispiel??
Und erstelle tu ich das xml mit dem gleichen Methde, die ich oben erwähnt habe, allerdings nicht mit SyndFeed, sondern mit meiner Klasse, die von SyndFeed erbt. Und das gleiche auch für die Entry-Klasse.
Hab ich das jetzt richtig verstanden???


----------



## KSG9|sebastian (17. Aug 2006)

Lies dir mal das durch:

http://www.xml.com/pub/a/2006/02/22/rome-parse-publish-rss-atom-feeds-java.html


----------



## AlArenal (17. Aug 2006)

Am Anfang lernt man durch Kopieren. Wenn du wild eigene Tags in "dein" RSS einfügst - welcher Newsreader soll das verstehen? Genau, keiner.. die werden es bestenfalls einfach ignorieren, im schlimmsten Fall steigen sie mit Fehlermeldungen aus.

Betrachtet man 2. undbhängig von 1., hat das zunächst mal nüscht miteinadner zu tun. Was vernalasst dich zur Annahme, dass RSS das ist, was du benutzen willst? Oder willst du wirklich einfach nur deine Daten "irgendwie" in einem XML-File ablegen und das später weiterverwursten?

Das Tutorial beschreibt eigentlich schon alles. Bei RSS gibts nicht viel beizubringen. RSS ist in in allen (teils zueinander inkompatiblen) Versionen ne ganz einfache Klamotte. Muss wohl daran liegen, dass es auch nur für einen recht einfachen Zweck ersonnen wurde.

Versuch uns mal zu erklären, warum du denkst, dass deine Spcs aus 2. unbedingt mit RSS zu implementieren sind.


----------



## AlArenal (17. Aug 2006)

P.S.:
Und für bei 3 Meter breiten Codezeilen könnt ich töten..... Ich editiere mal..


----------



## dynamosympathisant86 (17. Aug 2006)

AlArenal hat gesagt.:
			
		

> Versuch uns mal zu erklären, warum du denkst, dass deine Spcs aus 2. unbedingt mit RSS zu implementieren sind.


Weil sie in einem RSS-Feed untergebracht werden sollen und ich die Zuarbeit dazu leiste.


----------



## dynamosympathisant86 (17. Aug 2006)

AlArenal hat gesagt.:
			
		

> P.S.:
> Und für bei 3 Meter breiten Codezeilen könnt ich töten..... Ich editiere mal..


Sry, aber ich wusste nicht, dass das Forum sich in die Breite aufblähen lässt. Da hat wohl einer die CSS vermehrt...


----------



## AlArenal (17. Aug 2006)

dynamosympathisant86 hat gesagt.:
			
		

> AlArenal hat gesagt.:
> 
> 
> 
> ...



Ach ja, da war ja was. Ok. Dann stelle ich die Frage neu:
Warum meinst du diese Infos als eigene Tags/Elemente im RSS unterbringen zu müssen?



			
				dynamosympathisant86 hat gesagt.:
			
		

> AlArenal hat gesagt.:
> 
> 
> 
> ...



Kein Problem. Das kam jetzt zu allem Überfluss noch dazu


----------



## dynamosympathisant86 (17. Aug 2006)

AlArenal hat gesagt.:
			
		

> Warum meinst du diese Infos als eigene Tags/Elemente im RSS unterbringen zu müssen?


Diese Elemente werden dann in dem jeweiligen Feed ausgelesen. Warum das neue Elemente sein müssen, kann ich dir nciht direkt sagen. Als Entwickler bekommt man meistens nur einen Teil einer Aufgabe..was mit dem Ergebnis später gemacht wird, bleibt einem meistens verborgen! So ist das leider auch in meinem Fall.
Meine Aufgabe ist eben, diese Elemente da mit zu erstellen! Warum das so sein soll....keine Ahnung!


----------



## KSG9|sebastian (17. Aug 2006)

Hm..wenn man ne Aufgabe hat aber das eigentliche Ziel nicht kennt wird dieses meistens um Längen verfehlt... 

Hast du das Tutorial mal gelesen? Da steht

1. Wie du Feeds aus ner XML-Datei erzeugst
2. Wie du in diese Feeds eigene Elemente einbaust
3. Wie du aus diesem Feed wieder eine XML-Datei erstellst

(Feed = Objekt vom Rome)

Gruß Sebastian


----------



## dynamosympathisant86 (17. Aug 2006)

Mit deiner Aussage hast du wohl Recht, aber das ist nunmal so! Leider...

Ich hab das Tutorial durch..allerdings habe ich Probleme das jar von ContentModule einzubinden.
Da kommt immer der Fehler: "could not write file .../.classpath". Deswegen kann ich das nicht ausführen. Ich binde das jar in Eclipse über Properties des betreffenden Projektes ein...wieso kommt die Fehlermeldung?


----------



## dynamosympathisant86 (17. Aug 2006)

Ich komm ohne diese .jar nicht weiter..wie kann ich die denn in mein bestehendes Projekt einbauen? Das ging sonst immer so, aber scheinbar hat der irgendein Problem damit, dass die Packages in einem src-Ordner sind. Das allerdings kam von ROME so geliefert...


----------



## dynamosympathisant86 (17. Aug 2006)

WAS KANN ICH TUN???


----------



## dynamosympathisant86 (18. Aug 2006)

*hochhol* ;-)


----------



## dynamosympathisant86 (18. Aug 2006)

Tolles Forum...keine Antwort. Von wegen hier wird einem geholfen...tZzZZzzZ
 :bloed:  :bloed:  [schild=3 fontcolor=000000 shadowcolor=C0C0C0 shieldshadow=1]www.java-forum.org[/schild] :bloed:  :bloed:


----------



## KSG9|sebastian (18. Aug 2006)

Nun ist echt gut..ich schlag mir 3 Tage mit dir um die Ohren und du schaffst es nicht

1. mal alle Fragen zu beantworten
2. uns ne gescheite (!!) Beschreibung zu geben
3. Eigeninitiative zu zeigen (immer nur dies geht nicht jenes geht nicht, anstatt dich selber hinzusetzen
4. hast du glaub nichtmal den Sinn von RSS wirklich verstanden

Zudem haben wir auch noch andere Aufgaben denen wir nachgehen und sind nicht verpflichtet dir deine Aufgaben zu lösen.


----------



## dynamosympathisant86 (18. Aug 2006)

Och, jungens...
1. ich hab euch alle Fragen beantwortet.
2. Was für ne Beschreibung wollt ihr denn noch???
3. Ich sitz selbst 3 Tage daran und komm nicht weiter...würde ich weiterkommen, hätte ich sicher nicht im Forum gepostet.
4. Dann hab ich den Sinn halt noch nicht verstanden, aber ich würde ihn gern verstehen wollen und mit einem(!) laufendem Programm wäre das sicher auch nen Tick einfacher für mich.

Ich habe die Methoden überschrieben und meine Elemente auch reingepackt, aber beim Ausführen werden die nicht mit angezeigt...
Über ein Code-Beispiel, welches auch läuft, wäre ich sehr dankbar. Dann könnte ich nämlich auch das Prinzip verstehen...

Erwartest du etwa, dass jeder Forenuser schon die Antworten auf seine Fragen weiss, die er stellt??


----------



## dynamosympathisant86 (20. Aug 2006)

helft mir dochmal bitte mit einer ordentlichen beschreibung, bitte!!!!!!!!!


----------



## KSG9|sebastian (21. Aug 2006)

Du musst

1) Die Klasse SyndBean und SyndEntry (heißen glaub so) überschreiben und getter bzw. setter für eine eigenen Werte einbauen
2) Die Klasse überschreiben welche aus der XML-Datei ein Java-Objekt generiert. Dort musst du sämtliche "normalen" Felder einlesen und DAZU die eigenen Elemente wie z.B. <img>abc.jpg</img>
3) Die Klasse überschreiben welche aus einem Java-Objekt eine XML-Datei generiert. Dort musst du wiederum sämtliche "normalen" Elemente rausschreiben und deine eigenen, z.B. so  Element e = new Element("img");e.setText(syndEntry.getImg());

Viel mehr gibts dazu nicht zu sagen, zumindest nicht ohne deinen Code...den du ja wohl mittlerweile geschrieben hast...


----------



## dynamosympathisant86 (21. Aug 2006)

Ich danke dir, Sebastian. Ich werde das jetzt versuchen umzusetzen und bei Problemen dann natürlich meinen Code mitposten.
Du meinst aber sicherlich die Klassen SyndFeed und SyndEntry, die ich überschreiben muss, oder? Eine SyndBean-Klasse gibt es nicht...


----------



## dynamosympathisant86 (21. Aug 2006)

Ich habe jetzt die Klassen zum "Reinschreiben" soweit überschrieben:

SyndEntryNewElement:

```
public class SyndEntryNewElement extends SyndEntryImpl
{
	private String _height;
	private String _width;
	private String _picURL;
    private ObjectBean _objBean;
    private String _uri;
    private String _title;
    private String _link;
    private Date _updatedDate;
    private SyndContent _summary;    
    private SyndContent _description;
    private List _links;
    private List _contents; // deprecated by Atom 1.0
    private List _modules;
    private List _enclosures;
    private List _authors;
    private List _contributors;
	
	public List getAuthors() {
		return _authors;
	}
	public void setAuthors(List _authors) {
		this._authors = _authors;
	}
	public List getContents() {
		return _contents;
	}
	public void setContents(List _contents) {
		this._contents = _contents;
	}
	public List getContributors() {
		return _contributors;
	}
	public void setContributors(List _contributors) {
		this._contributors = _contributors;
	}
	public SyndContent getDescription() {
		return _description;
	}
	public void setDescription(SyndContent _description) {
		this._description = _description;
	}
	public List getEnclosures() {
		return _enclosures;
	}
	public void setEnclosures(List _enclosures) {
		this._enclosures = _enclosures;
	}
	public String getLink() {
		return _link;
	}
	public void setLink(String _link) {
		this._link = _link;
	}
	public List getLinks() {
		return _links;
	}
	public void setLinks(List _links) {
		this._links = _links;
	}
	public List getModules() {
		return _modules;
	}
	public void setModules(List _modules) {
		this._modules = _modules;
	}
	public ObjectBean getObjBean() {
		return _objBean;
	}
	public void setObjBean(ObjectBean bean) {
		_objBean = bean;
	}
	public SyndContent getSummary() {
		return _summary;
	}
	public void setSummary(SyndContent _summary) {
		this._summary = _summary;
	}
	public String getTitle() {
		return _title;
	}
	public void setTitle(String _title) {
		this._title = _title;
	}
	public Date getUpdatedDate() {
		return _updatedDate;
	}
	public void setUpdatedDate(Date date) {
		_updatedDate = date;
	}
	public String getUri() {
		return _uri;
	}
	public void setUri(String _uri) {
		this._uri = _uri;
	}

	public String getHeight() 
	{
		return _height;
	}
	public void setHeight(String height) 
	{
		_height = height;
	}
	public String getPicURL() 
	{
		return _picURL;
	}
	public void setPicURL(String picURL) 
	{
		_picURL = picURL;
	}
	public String getWidth()
	{
		return _width;
	}
	public void setWidth(String width)
	{
		_width = width;
	}	
}
```

SyndFeedNewElement:


```
public class SyndFeedNewElement extends SyndFeedImpl
{
    private ObjectBean _objBean;
    
    private String    _encoding;
    private String    _uri;
    private String    _title;
    private String    _feedType;
    private String    _link;
    private String 	  _height;
    private String    _width;
    private String    _picURL;		
    private List      _links;
    private String    _description;
    private SyndImage _image;
    private List      _entries;
    private List      _modules;
    private List      _authors;
    private List      _contributors; 
    
    private static final Converters CONVERTERS = new Converters();
	
	public String getHeight()
	{
		return _height;
	}
	public void setHeight(String height)
	{
		_height = height;
	}
	public String getPicURL()
	{
		return _picURL;
	}
	public void setPicURL(String picURL)
	{
		_picURL = picURL;
	}
	public String getWidth()
	{
		return _width;
	}
	public void setWidth(String width)
	{
		_width = width;
	}
	
    public WireFeed createWireFeed() {
        return createWireFeed(_feedType);
    }

    public WireFeed createWireFeed(String feedType) {
        if (feedType==null) {
            throw new IllegalArgumentException("Feed type cannot be null");
        }
        Converter converter = CONVERTERS.getConverter(feedType);
        if (converter==null) {
            throw new IllegalArgumentException("Invalid feed type ["+feedType+"]");
        }
        return converter.createRealFeed(this);
    }
    
	public static Converters getCONVERTERS()
	{
		return CONVERTERS;
	}
	
	public List getAuthors()
	{
		return _authors;
	}
	public void setAuthors(List _authors)
	{
		this._authors = _authors;
	}
	public List getContributors()
	{
		return _contributors;
	}
	
	public void setContributors(List _contributors)
	{
		this._contributors = _contributors;
	}
	
	public String getDescription()
	{
		return _description;
	}
	
	public void setDescription(String _description)
	{
		this._description = _description;
	}
	
	public String getEncoding()
	{
		return _encoding;
	}
	
	public void setEncoding(String _encoding)
	{
		this._encoding = _encoding;
	}
	
	public List getEntries()
	{
		return _entries;
	}
	public void setEntries(List _entries)
	{
		this._entries = _entries;
	}
	
	public String getFeedType()
	{
		return _feedType;
	}
	
	public void setFeedType(String type)
	{
		_feedType = type;
	}
	
	public SyndImage getImage()
	{
		return _image;
	}
	
	public void setImage(SyndImage _image)
	{
		this._image = _image;
	}
	
	public String getLink()
	{
		return _link;
	}
	
	public void setLink(String _link)
	{
		this._link = _link;
	}
	
	public List getLinks()
	{
		return _links;
	}
	
	public void setLinks(List _links)
	{
		this._links = _links;
	}
	
	public List getModules()
	{
		return _modules;
	}
	
	public void setModules(List _modules)
	{
		this._modules = _modules;
	}
	
	public ObjectBean getObjBean()
	{
		return _objBean;
	}
	
	public void setObjBean(ObjectBean bean)
	{
		_objBean = bean;
	}
	
	public String getTitle()
	{
		return _title;
	}
	
	public void setTitle(String _title)
	{
		this._title = _title;
	}
	
	public String getUri()
	{
		return _uri;
	}
	
	public void setUri(String _uri)
	{
		this._uri = _uri;
	}	
}
```

Und meine main-Klasse CreateAndWriteOwnFeed:


```
public class CreateAndWriteOwnFeed
{
	public static void main(String[] args) throws Throwable
	  {
	    SyndFeedNewElement feed = new SyndFeedNewElement();
	    DateFormat dateParser = new SimpleDateFormat("yyyy-MM-dd");
	    feed.setFeedType("rss_1.0");

	    feed.setTitle("Sample Feed (created with ROME)");
	    feed.setLink("http://rome.dev.java.net");
	    feed.setDescription("This feed has been created using ROME (Java syndication utilities");
	    feed.setHeight("Height");
	    
	    List entries = new ArrayList();
	    SyndEntryNewElement entry;
	    SyndContent description;

	    entry = new SyndEntryNewElement();
	    entry.setTitle("ROME v1.0");
	    entry.setLink("http://wiki.java.net/bin/view/Javawsxml/Rome01");
	    entry.setHeight("Height");
	    description = new SyndContentImpl();
	    description.setType("text/plain");
	    description.setValue("Initial release of ROME");
	    entry.setDescription(description);
	    entries.add(entry);
	    
	    feed.setEntries(entries);

	    SyndFeedOutputNewElement output = new SyndFeedOutputNewElement();
	    StringWriter s = new StringWriter();
	    output.output(feed,s);
	    
	    System.out.println(s.getBuffer());
	  }
}
```

So, wenn ich das jetzt ausführe und ich mir die List entries anzeigen lassen möchte, kommt folgende Augabe:

[SyndEntryNewElement.updatedDate=null
SyndEntryNewElement.contributors=null
SyndEntryNewElement.title=ROME v1.0
SyndEntryNewElement.categories=[]
SyndEntryNewElement.link=http://wiki.java.net/bin/view/Javawsxml/Rome01

EXCEPTION: Could not complete class _rssFeed.SyndEntryNewElement.toString(): null
]

Warum wird das auf einmal unterbrochen und es kommt so eine komische Exception? Warum zeigt er mir nen Fehler mit toString() an, obwohl ich das gar nicht benutz?


----------



## dynamosympathisant86 (22. Aug 2006)

Weiss einer Rat??


----------



## KSG9|sebastian (22. Aug 2006)

mach mal folgendes:


```
public static void main(String[] args)
     { 
     try{
       SyndFeedNewElement feed = new SyndFeedNewElement(); 
       DateFormat dateParser = new SimpleDateFormat("yyyy-MM-dd"); 
       feed.setFeedType("rss_1.0"); 

       feed.setTitle("Sample Feed (created with ROME)"); 
       feed.setLink("http://rome.dev.java.net"); 
       feed.setDescription("This feed has been created using ROME (Java syndication utilities"); 
       feed.setHeight("Height"); 
       
       List entries = new ArrayList(); 
       SyndEntryNewElement entry; 
       SyndContent description; 

       entry = new SyndEntryNewElement(); 
       entry.setTitle("ROME v1.0"); 
       entry.setLink("http://wiki.java.net/bin/view/Javawsxml/Rome01"); 
       entry.setHeight("Height"); 
       description = new SyndContentImpl(); 
       description.setType("text/plain"); 
       description.setValue("Initial release of ROME"); 
       entry.setDescription(description); 
       entries.add(entry); 
       
       feed.setEntries(entries); 

       SyndFeedOutputNewElement output = new SyndFeedOutputNewElement(); 
       StringWriter s = new StringWriter(); 
       output.output(feed,s); 
       
       System.out.println(s.getBuffer()); 
     } catch(Exception ex){
         ex.printStackTrace();
     }
}
```

Und poste den ganzen Stacktrace, da ist sicher ein Hinweis wo der Fehler liegt.

P.S.: Guck, mit ein bisschen Eigeninitiative kommst du schon recht weit, oder? Und dann hat sicher auch keiner n Problem damit dir bei deinen Problemen zu helfen.

Gruß Sebastian


----------



## KSG9|sebastian (22. Aug 2006)

Poste mal die Klasse 'SyndFeedOutputNewElement', dann test ich das ganze kurz bei mir am PC durch.

gruß


----------



## dynamosympathisant86 (22. Aug 2006)

Also...ich bin die letzte Stunde richtig gut voran gekommen. Ich habe jetzt alles in dem Objekt WireFeed stehen, was ich brauche. Jetzt muss nur noch die Ausgabe klappen.
Meine SyndFeedOutputNewElement-Klasse:

```
public class SyndFeedOutputNewElement extends SyndFeedOutput
{
    private WireFeedOutput _feedOutput;

    public void output(SyndFeedNewElement feed,Writer writer) throws IOException, FeedException
    {
    	_feedOutput = new WireFeedOutput();
    	_feedOutput.output(feed.createWireFeed(),writer);
    }
}
```

und die output-Methode in der WireFeedOutput-Klasse:

```
public void output(WireFeed feed,Writer writer) throws IllegalArgumentException,IOException, FeedException {
    	Document doc = outputJDom(feed);
        String encoding = feed.getEncoding();
        Format format = Format.getPrettyFormat();
        if (encoding!=null) {
            format.setEncoding(encoding);
        }
        XMLOutputter outputter = new XMLOutputter(format);
        outputter.output(doc,writer);
    }
```

in der Variable feed steht folgendes:


```
Channel.ttl=-1
Channel.title=Sample Feed (created with ROME)
Channel.categories=[]
Channel.rating=null
Channel.modules=[]
Channel.textInput=null
Channel.encoding=null
Channel.managingEditor=null
Channel.height=Height
Channel.docs=null
Channel.items[0].comments=null
Channel.items[0].title=ROME v1.0
Channel.items[0].categories=[]
Channel.items[0].link=http://wiki.java.net/bin/view/Javawsxml/Rome01
Channel.items[0].pubDate=null
Channel.items[0].modules[0].descriptions=[]
Channel.items[0].modules[0].creators=[]
Channel.items[0].modules[0].contributors=[]
Channel.items[0].modules[0].title=null
Channel.items[0].modules[0].relations=[]
Channel.items[0].modules[0].publisher=null
Channel.items[0].modules[0].date=null
Channel.items[0].modules[0].languages=[]
Channel.items[0].modules[0].titles=[]
Channel.items[0].modules[0].rightsList=[]
Channel.items[0].modules[0].interface=interface com.sun.syndication.feed.module.DCModule
Channel.items[0].modules[0].subjects=[]
Channel.items[0].modules[0].contributor=null
Channel.items[0].modules[0].sources=[]
Channel.items[0].modules[0].types=[]
Channel.items[0].modules[0].type=null
Channel.items[0].modules[0].rights=null
Channel.items[0].modules[0].publishers=[]
Channel.items[0].modules[0].formats=[]
Channel.items[0].modules[0].dates=[]
Channel.items[0].modules[0].language=null
Channel.items[0].modules[0].identifiers=[]
Channel.items[0].modules[0].creator=null
Channel.items[0].modules[0].coverage=null
Channel.items[0].modules[0].uri=http://purl.org/dc/elements/1.1/
Channel.items[0].modules[0].description=null
Channel.items[0].modules[0].identifier=null
Channel.items[0].modules[0].subject=null
Channel.items[0].modules[0].relation=null
Channel.items[0].modules[0].source=null
Channel.items[0].modules[0].format=null
Channel.items[0].modules[0].coverages=[]
Channel.items[0].enclosures=[]
Channel.items[0].uri=null
Channel.items[0].description.value=Initial release of ROME
Channel.items[0].description.type=text/plain
Channel.items[0].guid=null
Channel.items[0].source=null
Channel.items[0].expirationDate=null
Channel.items[0].author=null
Channel.image=null
Channel.copyright=null
Channel.webMaster=null
Channel.pubDate=null
Channel.link=http://rome.dev.java.net
Channel.skipDays=[]
Channel.cloud=null
Channel.language=null
Channel.skipHours=[]
Channel.feedType=rss_1.0
Channel.uri=http://rome.dev.java.net
Channel.lastBuildDate=null
Channel.description=This feed has been created using ROME (Java syndication utilities
Channel.generator=null
```
Die Höhe (height) ist also schon mit drin. Nur ausgeben wird das in dem XML-Baum noch nicht...da weiss ich noch nicht ganz woran es liegt..Vielleicht findest du ja was?


----------



## dynamosympathisant86 (22. Aug 2006)

Ich hab jetzt deine main-Mehtode genommer, hab das leider erst nach meinem Post entdeckt. Ich erhalte da einen XML-Baum..keinen Stacktrace...es liegt ja kein Fehler vor, es werden bis jetzt die neuen Elemente nicht mit in die Ausgabe einbezogen, da fehlt noch irgendwas.
Ich weiss schon, dass ich so mehr erreichen kann. Aber ich war einfach zu "neu" in dem Thema um euch viel darüber sagen zu können und hab überhaupt nicht durchgeblickt.


----------



## KSG9|sebastian (22. Aug 2006)

Die Methode output(WiredFeed, Writer) wird aufgerufen. Du hast die falsche erwischt..
ich schau kurz in die Sourcen..moment


----------



## KSG9|sebastian (22. Aug 2006)

Du musst einen eigenen ModulGenerator schreiben:

Hier ein Beispiel aus dem Tutorial wie das funktioniert:


```
public class SampleModuleGenerator  implements ModuleGenerator {
    private static final Namespace SAMPLE_NS  = Namespace.getNamespace("sample", SampleModule.URI);

    public String getNamespaceUri() {
        return SampleModule.URI;
    }

    private static final Set NAMESPACES;

    static {
        Set nss = new HashSet();
        nss.add(SAMPLE_NS);
        NAMESPACES = Collections.unmodifiableSet(nss);
    }

    public Set getNamespaces() {
        return NAMESPACES;
    }

    public void generate(Module module, Element element) {

        // this is not necessary, it is done to avoid the namespace definition in every item.
        Element root = element;
        while (root.getParent()!=null && root.getParent() instanceof Element) {
            root = (Element) element.getParent();
        }
        root.addNamespaceDeclaration(SAMPLE_NS);

        SampleModuleI fm = (SampleModule)module;
        if (fm.getBar() != null) {
            element.addContent(generateSimpleElement("bar", fm.getBar()));
        }
        List foos = fm.getFoos();
        for (int i = 0; i < foos.size(); i++) {
            element.addContent(generateSimpleElement("foo",foos.get(i).toString()));
        }
        if (fm.getDate() != null) {
            element.addContent(generateSimpleElement("date", DateParser.formatW3CDateTime(fm.getDate())));
        }
    }

    protected Element generateSimpleElement(String name, String value)  {
        Element element = new Element(name, SAMPLE_NS);
        element.addContent(value);
        return element;
    }

}
```

Und dann noch deinen eigenen Generator bei Rome anmelden
rome.properties (muss in den Classpath)

```
# Parsers for RSS 1.0 feed modules
#
rss_1.0.feed.ModuleParser.classes=com.sun.syndication.samples.module.SampleModuleParser

# Parsers for RSS 1.0 item modules
#
rss_1.0.item.ModuleParser.classes=com.sun.syndication.samples.module.SampleModuleParser

# Generators for RSS 1.0 feed modules
#
rss_1.0.feed.ModuleGenerator.classes=com.sun.syndication.samples.module.SampleModuleGenerator

# Generators for RSS_1.0 entry modules
#
rss_1.0.item.ModuleGenerator.classes=com.sun.syndication.samples.module.SampleModuleGenerator
```

Natürlich nur die Module eintragen welche du auch hast...


----------



## dynamosympathisant86 (22. Aug 2006)

Ich hab aber kein Module angelegt...ich hab das folgendermaßen gemacht:
Meine Klasse SyndFeedNewElement erbt von SyndFeedImpl und beinhaltet das neue Element "height" mit den get- und set-Methoden. Dann habe ich die entsprechenden Methoden umgeschrieben und das height-Element mit einbezogen. Jetzt steht das in der Variable feed in WireFeedOutput das aus meinem letzten Post drin. Also das:


```
Channel.ttl=-1
Channel.title=Sample Feed (created with ROME)
Channel.categories=[]
Channel.rating=null
Channel.modules=[]
Channel.textInput=null
Channel.encoding=null
Channel.managingEditor=null
Channel.height=Height
Channel.docs=null
Channel.items[0].comments=null
Channel.items[0].title=ROME v1.0
Channel.items[0].categories=[]
Channel.items[0].link=http://wiki.java.net/bin/view/Javawsxml/Rome01
Channel.items[0].pubDate=null
Channel.items[0].modules[0].descriptions=[]
Channel.items[0].modules[0].creators=[]
Channel.items[0].modules[0].contributors=[]
Channel.items[0].modules[0].title=null
Channel.items[0].modules[0].relations=[]
Channel.items[0].modules[0].publisher=null
Channel.items[0].modules[0].date=null
Channel.items[0].modules[0].languages=[]
Channel.items[0].modules[0].titles=[]
Channel.items[0].modules[0].rightsList=[]
Channel.items[0].modules[0].interface=interface com.sun.syndication.feed.module.DCModule
Channel.items[0].modules[0].subjects=[]
Channel.items[0].modules[0].contributor=null
Channel.items[0].modules[0].sources=[]
Channel.items[0].modules[0].types=[]
Channel.items[0].modules[0].type=null
Channel.items[0].modules[0].rights=null
Channel.items[0].modules[0].publishers=[]
Channel.items[0].modules[0].formats=[]
Channel.items[0].modules[0].dates=[]
Channel.items[0].modules[0].language=null
Channel.items[0].modules[0].identifiers=[]
Channel.items[0].modules[0].creator=null
Channel.items[0].modules[0].coverage=null
Channel.items[0].modules[0].uri=http://purl.org/dc/elements/1.1/
Channel.items[0].modules[0].description=null
Channel.items[0].modules[0].identifier=null
Channel.items[0].modules[0].subject=null
Channel.items[0].modules[0].relation=null
Channel.items[0].modules[0].source=null
Channel.items[0].modules[0].format=null
Channel.items[0].modules[0].coverages=[]
Channel.items[0].enclosures=[]
Channel.items[0].uri=null
Channel.items[0].description.value=Initial release of ROME
Channel.items[0].description.type=text/plain
Channel.items[0].guid=null
Channel.items[0].source=null
Channel.items[0].expirationDate=null
Channel.items[0].author=null
Channel.image=null
Channel.copyright=null
Channel.webMaster=null
Channel.pubDate=null
Channel.link=http://rome.dev.java.net
Channel.skipDays=[]
Channel.cloud=null
Channel.language=null
Channel.skipHours=[]
Channel.feedType=rss_1.0
Channel.uri=http://rome.dev.java.net
Channel.lastBuildDate=null
Channel.description=This feed has been created using ROME (Java syndication utilities
Channel.generator=null
```
Und die Methode output von WireFeedGenerator wird auch aufgerufen. Scheint also nicht die falsche zu sein. Und der XMLOutputter übernimmt dann die Ausgabe mit der Methode output. Allerdings wird darin das neue Element nicht berücksichtigt, also muss ich doch diese überschreiben, oder?


----------



## KSG9|sebastian (22. Aug 2006)

wenn du nen WiredFeed und nen Writer übergibst wird doch die Methode outputJDom verwendet ?! Und die holt sich wiederum einen Generator. Ansonsten die output-Methode überschreiben


----------



## dynamosympathisant86 (22. Aug 2006)

Ja, richtig..die output-Methode ruft die outputJDom auf. Die hab ich auch schon bearbeitet. Ich habs geschafft, in den XML-Baum die feed-Elemente einzubauen. *freu*
Jetzt muss ich allerdings mal schauen, wie ich die item-Elemente noch mit reinschreiben kann! Ich hoffe, das klappt auch dann gleich. Muss heute damit fertig werden :-/


----------



## dynamosympathisant86 (22. Aug 2006)

Oh...das wird dann doch nicht so gehen, wie ich dachte. Wie kann ich den items einfügen? Da muss ich doch über die setModules_Methode neue Module hinzufügen, oder?


----------



## Guest (24. Aug 2006)

Ich habe meinen Feed nun so hinbekommen, wie ich es wollte. Allerdings nicht mit dem Schreiben neuer Klassen und überschreiben von Methoden, sondern nur über das direkte einfügen von den Elementen in den Rome-Code.

Ich versuche gerade, den Rome-Code unangetastet zu lassen und nur die Methoden etc. zu überschreiben. Aber das ist quasi unmöglich...Hast du dir das mal angeguckt?
Das ist so in sich verschachtelt, dass es nicht möglich ist, dass per Überschreiben zu machen. So, wie du es mir jedenfalls gesagt hattest, geht es nicht...
Und das Tutorial gibt mir auch keinen weiteren Aufschluss darüber!


----------



## Gast (24. Aug 2006)

Help!?!?!?


----------



## Gast (27. Aug 2006)

???


----------



## Wildcard (27. Aug 2006)

!!!


----------



## Gast (27. Aug 2006)

Kann  mir denn keiner bei dem Überschreiben der Klassen helfen? Ich pack das nicht, aber ich brauch das dringend bis morgen! Da gibts sicher ne ganz einfache Methode. Ich hab aber keine Idee, wie das gehen soll. In dem Beispiel auf der ROME-Seite sind 4 Klassen geschrieben wurden und angeblich soll das funktionieren, dass tut es aber nicht!


----------

