Added News RSS parser.

This commit is contained in:
Robert Kolner committed 2011-11-02 22:08:11 +01:00
1 parent 51b41a4253
commit 05b7ceb954
4 files changed
+180 -67

No files matched your search

@@ -5,68 +5,76 @@ import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class RSSParserProgram {
private static DataHandler dh;
public RSSParserProgram() {
dh = new DataHandler();
}
private final DataHandler dh;
public DataHandler parse(NodeList itemNodes) {
String id = "";
String title = "";
String description = "";
String date = "";
String location = "";
String text = "";
String category = "";
// String pictureUrl = ""; Necessary?
for (int i = 0; i < itemNodes.getLength(); i++) {
Node itemNode = itemNodes.item(i);
if (itemNode.getNodeType() == Node.ELEMENT_NODE) {
// Convert the Node into an Element.
Element itemElement = (Element) itemNode;
// Get all elements under the <item> element.
NodeList idNodes = (itemElement).getElementsByTagName("id");
NodeList titleNodes = (itemElement).getElementsByTagName("title");
NodeList descriptionNodes = (itemElement).getElementsByTagName("description");
NodeList dateNodes = (itemElement).getElementsByTagName("date");
NodeList locationNodes = (itemElement).getElementsByTagName("location");
NodeList textNodes = (itemElement).getElementsByTagName("content");
NodeList categoryNodes = (itemElement).getElementsByTagName("category");
// Convert a Node into an Element.
Node idElement = idNodes.item(0);
Node titleElement = titleNodes.item(0);
Node descriptionElement = descriptionNodes.item(0);
Node dateElement = dateNodes.item(0);
Node locationElement = locationNodes.item(0);
Node textElement = textNodes.item(0);
Node categoryElement = categoryNodes.item(0);
// Get all the child nodes.
NodeList idTextNodes = idElement.getChildNodes();
NodeList titleTextNodes = titleElement.getChildNodes();
NodeList descriptionTextNodes = descriptionElement.getChildNodes();
NodeList dateTextNodes = dateElement.getChildNodes();
NodeList locationTextNodes = locationElement.getChildNodes();
NodeList textTextNodes = textElement.getChildNodes();
NodeList categoryTextNodes = categoryElement.getChildNodes();
// Retrieve the text.
id = idTextNodes.item(0).getNodeValue(); // mandatory
title = titleTextNodes.item(0).getNodeValue(); // mandatory
if (descriptionTextNodes.getLength() > 0) description = descriptionTextNodes.item(0).getNodeValue();
if (dateTextNodes.getLength() > 0) date = dateTextNodes.item(0).getNodeValue();
if (locationTextNodes.getLength() > 0) location = locationTextNodes.item(0).getNodeValue();
if (textTextNodes.getLength() > 0) text = textTextNodes.item(0).getNodeValue();
if (categoryTextNodes.getLength() > 0) category = categoryTextNodes.item(0).getNodeValue();
dh.insertEvent(id, title, description, date, location, text, category);
}
}
return dh;
public RSSParserProgram() {
this(null);
}
public RSSParserProgram(DataHandler dh) {
if (dh == null) {
this.dh = new DataHandler();
} else {
this.dh = dh;
}
}
public DataHandler parse(NodeList itemNodes) {
String id = "";
String title = "";
String description = "";
String date = "";
String location = "";
String text = "";
String category = "";
// String pictureUrl = ""; Necessary?
for (int i = 0; i < itemNodes.getLength(); i++) {
Node itemNode = itemNodes.item(i);
if (itemNode.getNodeType() == Node.ELEMENT_NODE) {
// Convert the Node into an Element.
Element itemElement = (Element) itemNode;
// Get all elements under the <item> element.
NodeList idNodes = (itemElement).getElementsByTagName("id");
NodeList titleNodes = (itemElement).getElementsByTagName("title");
NodeList descriptionNodes = (itemElement).getElementsByTagName("description");
NodeList dateNodes = (itemElement).getElementsByTagName("date");
NodeList locationNodes = (itemElement).getElementsByTagName("location");
NodeList textNodes = (itemElement).getElementsByTagName("content");
NodeList categoryNodes = (itemElement).getElementsByTagName("category");
// Convert a Node into an Element.
Node idElement = idNodes.item(0);
Node titleElement = titleNodes.item(0);
Node descriptionElement = descriptionNodes.item(0);
Node dateElement = dateNodes.item(0);
Node locationElement = locationNodes.item(0);
Node textElement = textNodes.item(0);
Node categoryElement = categoryNodes.item(0);
// Get all the child nodes.
NodeList idTextNodes = idElement.getChildNodes();
NodeList titleTextNodes = titleElement.getChildNodes();
NodeList descriptionTextNodes = descriptionElement.getChildNodes();
NodeList dateTextNodes = dateElement.getChildNodes();
NodeList locationTextNodes = locationElement.getChildNodes();
NodeList textTextNodes = textElement.getChildNodes();
NodeList categoryTextNodes = categoryElement.getChildNodes();
// Retrieve the text.
id = idTextNodes.item(0).getNodeValue(); // mandatory
title = titleTextNodes.item(0).getNodeValue(); // mandatory
if (descriptionTextNodes.getLength() > 0) description = descriptionTextNodes.item(0).getNodeValue();
if (dateTextNodes.getLength() > 0) date = dateTextNodes.item(0).getNodeValue();
if (locationTextNodes.getLength() > 0) location = locationTextNodes.item(0).getNodeValue();
if (textTextNodes.getLength() > 0) text = textTextNodes.item(0).getNodeValue();
if (categoryTextNodes.getLength() > 0) category = categoryTextNodes.item(0).getNodeValue();
dh.insertEvent(id, title, description, date, location, text, category);
}
}
return dh;
}
}