Question
Objectives Familiarity with using XMLTrees to process XML Familiarity with using while loops and static methods Exposure to RSS technology The Problem RSS (Really Simple
Objectives
Familiarity with using XMLTrees to process XML
Familiarity with using while loops and static methods
Exposure to RSS technology
The Problem
RSS (Really Simple Syndication) is an XML application for distributing web content that changes frequently. Many news-related sites, weblogs and other online publishers syndicate their content as an RSS Feed to whoever wants it.
For this project your task is to write a program that asks the user for the URL of an RSS 2.0 feed and for the name of an output file including the .html extension, reads the RSS feed into an XMLTree object and then uses the information in the XMLTree object to generate in the output file a nicely formatted HTML page with table of links to all the news items in the original feed.
Input: RSS 2.0 XML Document
Here is a simplified description of the structure of an RSS 2.0 XML document. RSS 2.0 documents can contain a few other tags and features, but these are the ones you will need for the project.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
Link goes here
Optional link goes here
...
...
|
Note the following properties of RSS 2.0 XML documents:
The children of the
All the children of
If a
Note that when your program creates an XMLTree object from a given RSS 2.0 feed, if it is successful, all you know is that the input is a valid XML document. It is up to your program to check that the label of the root of the XMLTree is an
Output: HTML Web Page
These are the minimum requirements for the generated web page. If you think you can produce better output or include more information, you should consult your instructor to make sure that any changes you want to implement are acceptable. This is what your output should include:
the
a header with the page title inside a link to the
a paragraph with the
a table with appropriate headers; each row should correspond to one news item with the following columns:
the publication date, if present, or "No date available"
the source, if present, which should be linked to the source url, or "No source available"
the title, if present and not empty, or the description, if not empty, or "No title available", which should be linked if a link for the news item is available
You can see an example of the output here (note that the links may be outdated and no longer available).
Method
Create a new Eclipse project by copying ProjectTemplate and name the new project RSSReader.
Open the src folder of this project and then open (default package). As a starting point you can use any of the Java files. Rename it RSSReader and delete the other files from the project. Open the RSSReader.java file in the editor.
Follow the link to RSSReader.java, select all the code on that page, copy it to the clipboard, and paste it into Eclipse's editor window to replace the skeleton code.
Edit RSSReader.java to satisfy the problem requirements stated above by completing the methods provided.
This is the RSSReader.java file use this for the program
import components.simplereader.SimpleReader; import components.simplereader.SimpleReader1L; import components.simplewriter.SimpleWriter; import components.simplewriter.SimpleWriter1L; import components.xmltree.XMLTree; import components.xmltree.XMLTree1; /** * Program to convert an XML RSS (version 2.0) feed from a given URL into the * corresponding HTML output file. * * @author Put your name here * */ public final class RSSReader { /** * Private constructor so this utility class cannot be instantiated. */ private RSSReader() { } /** * Outputs the "opening" tags in the generated HTML file. These are the * expected elements generated by this method: * * * *the channel tag title as the page title * * *the page title inside a link to the
*link the channel description
*
Date | *Source | *News | *
---|
* getChildElement = * [the index of the first child of type tag of the {@code XMLTree} or * -1 if not found] **/ private static int getChildElement(XMLTree xml, String tag) { assert xml != null : "Violation of: xml is not null"; assert tag != null : "Violation of: tag is not null"; assert xml.isTag() : "Violation of: the label root of xml is a tag"; /* * TODO: fill in body */ } /** * Processes one news item and outputs one table row. The row contains three * elements: the publication date, the source, and the title (or * description) of the item. * * @param item * the news item * @param out * the output stream * @updates out.content * @requires * [the label of the root of item is an
* out.content = #out.content * * [an HTML table row with publication date, source, and title of news item] **/ private static void processItem(XMLTree item, SimpleWriter out) { assert item != null : "Violation of: item is not null"; assert out != null : "Violation of: out is not null"; assert item.isTag() && item.label().equals("item") : "" + "Violation of: the label root of item is an
Smaple output
Yahoo! News - Latest News & Headlines The latest news and headlines from Yahoo! News. Get breaking news stories and in-depth coverage with videos and photos. Date Source News Mon, 27 Aug 2012 17:13:44-0400 No source available Obama promises to help Gulf Coast governors with TS Isaac Mon, 27 Aug 2012 15:13:46-0400 No source availableR Mon, 27 Aug 2012 12:02:51 -0400 ABC News Mon, 27 Aug 2012 17:14:09 -0400 No source available Mon, 27 Aug 2012 10:03:33-0400 No source available Romney admits Democratic attacks are hurting him with voters Mon, 27 Aug 2012 14:42:25-0400 Associated Press Mon, 27 Aug 2012 14:40:49-0400 Reuters Fri, 24 Aug 2012 12:00:37-0400 No source available P Mon, 27 Aug 2012 14:35:21 -0400 Associated Press Mon, 27 Aug 2012 13:14:46-0400 No source available The speech that Nixon never gave: In event of moon disaster^. Mon, 27 Aug 2012 15:04:26 -0400 No source available Mon, 27 Aug 2012 14:04:51 -0400 No source available Meet the wor Mon, 27 Aug 2012 16:13:17 -0400 Good Morning America M Mon, 27 Aug 2012 10:01:37-0400 Good Morning America Bill Nye The Science Guy' hits evolution deniers Mon, 27 Aug 2012 07:32:32 -0400 SPACE com Mon, 27 Aug 2012 14:34:38-0400 Good Morning America Do our genes determine h Mon, 27 Aug 2012 16:02:17 -0400 AFP Mon, 27 Aug 2012 02:07:10 -0400 Associated Press Mon, 27 Aug 2012 11:57:05-0400 LiveScience.com Mon, 27 Aug 2012 06:55:55 -0400 Associated Press Killed for dancing: 17 Afghans beheaded in attack on party Sun, 26 Aug 2012 17:21:13 -0400 Reuters Romney vows free-market defense as GOP opens convention y of school: teacher subdues gunman move on diers, Marines punished for misconduct in Afghanistan Ap sues voters want addressed efends police force in NYC gun f y be forced to go vegetarian by 2050, scientists say person,Besse ( per, turn Blue moon' to light up night sky this weelk UN chief leads world outcry over Syria 'massac Series of earthquakes rattle Southern California One small step for (a) man': Was Neil Armstrong misquoted? Ex-South Carolina governor to marry former mistr Yahoo! News - Latest News & Headlines The latest news and headlines from Yahoo! News. Get breaking news stories and in-depth coverage with videos and photos. Date Source News Mon, 27 Aug 2012 17:13:44-0400 No source available Obama promises to help Gulf Coast governors with TS Isaac Mon, 27 Aug 2012 15:13:46-0400 No source availableR Mon, 27 Aug 2012 12:02:51 -0400 ABC News Mon, 27 Aug 2012 17:14:09 -0400 No source available Mon, 27 Aug 2012 10:03:33-0400 No source available Romney admits Democratic attacks are hurting him with voters Mon, 27 Aug 2012 14:42:25-0400 Associated Press Mon, 27 Aug 2012 14:40:49-0400 Reuters Fri, 24 Aug 2012 12:00:37-0400 No source available P Mon, 27 Aug 2012 14:35:21 -0400 Associated Press Mon, 27 Aug 2012 13:14:46-0400 No source available The speech that Nixon never gave: In event of moon disaster^. Mon, 27 Aug 2012 15:04:26 -0400 No source available Mon, 27 Aug 2012 14:04:51 -0400 No source available Meet the wor Mon, 27 Aug 2012 16:13:17 -0400 Good Morning America M Mon, 27 Aug 2012 10:01:37-0400 Good Morning America Bill Nye The Science Guy' hits evolution deniers Mon, 27 Aug 2012 07:32:32 -0400 SPACE com Mon, 27 Aug 2012 14:34:38-0400 Good Morning America Do our genes determine h Mon, 27 Aug 2012 16:02:17 -0400 AFP Mon, 27 Aug 2012 02:07:10 -0400 Associated Press Mon, 27 Aug 2012 11:57:05-0400 LiveScience.com Mon, 27 Aug 2012 06:55:55 -0400 Associated Press Killed for dancing: 17 Afghans beheaded in attack on party Sun, 26 Aug 2012 17:21:13 -0400 Reuters Romney vows free-market defense as GOP opens convention y of school: teacher subdues gunman move on diers, Marines punished for misconduct in Afghanistan Ap sues voters want addressed efends police force in NYC gun f y be forced to go vegetarian by 2050, scientists say person,Besse ( per, turn Blue moon' to light up night sky this weelk UN chief leads world outcry over Syria 'massac Series of earthquakes rattle Southern California One small step for (a) man': Was Neil Armstrong misquoted? Ex-South Carolina governor to marry former mistr
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started