I have written a Java class that parses Shoutcast 2 stats XML. It uses JDOM to parse the XML. I have only basic knowledge of Java and I wrote this class in about 3 hours. It works, but I don't know if I've done everything right, or how efficient it is. I intend to use this class in an Android app I am working on. You can view the class below. Any feedback to make this class better and more efficient is greatly appreciated.
package com.brandsonic.shoutcastParser;
import java.io.IOException;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.JDOMException;
import org.jdom2.input.SAXBuilder;
public class ShoutcastParser {
private Element root;
private int currentListeners = -1;
private int peakListeners = -1;
private int maxListeners = -1;
private int uniqueListeners = -1;
private int averageTime = -1;
private String serverGenre;
private String serverGenre2;
private String serverGenre3;
private String serverGenre4;
private String serverGenre5;
private String serverUrl;
private String serverTitle;
private String songTitle;
private String dJ;
private int streamHits = -1;
private int streamStatus = -1;
private int backupStatus = -1;
private int streamListed = -1;
private String streamPath;
private int streamUpTime = -1;
private int bitrate = -1;
private String content;
private String version;
public ShoutcastParser(String URL) {
parseXML(URL);
}
public void parseXML(String URL) {
SAXBuilder builder = new SAXBuilder();
Document xml = null;
try {
xml = builder.build(URL);
} catch (JDOMException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
root = xml.getRootElement();
setVars();
}
public void setVars() {
currentListeners = Integer.parseInt(root.getChildText("CURRENTLISTENERS"));
peakListeners = Integer.parseInt(root.getChildText("PEAKLISTENERS"));
maxListeners = Integer.parseInt(root.getChildText("MAXLISTENERS"));
uniqueListeners = Integer.parseInt(root.getChildText("UNIQUELISTENERS"));
averageTime = Integer.parseInt(root.getChildText("AVERAGETIME"));
serverGenre = root.getChildText("SERVERGENRE");
serverGenre2 = root.getChildText("SERVERGENRE2");
serverGenre3 = root.getChildText("SERVERGENRE3");
serverGenre4 = root.getChildText("SERVERGENRE4");
serverGenre5 = root.getChildText("SERVERGENRE5");
serverUrl = root.getChildText("SERVERURL");
serverTitle = root.getChildText("SERVERTITLE");
songTitle = root.getChildText("SONGTITLE");
dJ = root.getChildText("DJ");
streamHits = Integer.parseInt(root.getChildText("STREAMHITS"));
streamStatus = Integer.parseInt(root.getChildText("STREAMSTATUS"));
backupStatus = Integer.parseInt(root.getChildText("BACKUPSTATUS"));
streamListed = Integer.parseInt(root.getChildText("STREAMLISTED"));
streamPath = root.getChildText("STREAMPATH");
streamUpTime = Integer.parseInt(root.getChildText("STREAMUPTIME"));
bitrate = Integer.parseInt(root.getChildText("BITRATE"));
content = root.getChildText("CONTENT");
version = root.getChildText("VERSION");
}
public int getCurrentListeners() {
return currentListeners;
}
public int getPeakListeners() {
return peakListeners;
}
public int getMaxListeners() {
return maxListeners;
}
public int getUniqueListeners() {
return uniqueListeners;
}
public int getAverageTime() {
return averageTime;
}
public String getServerGenre() {
return serverGenre;
}
public String getServerGenre2() {
return serverGenre2;
}
public String getServerGenre3() {
return serverGenre3;
}
public String getServerGenre4() {
return serverGenre4;
}
public String getServerGenre5() {
return serverGenre5;
}
public String getServerURL() {
return serverUrl;
}
public String getServerTitle() {
return serverTitle;
}
public String getSongTitle() {
return songTitle;
}
public String getDJ() {
return dJ;
}
public int getStreamHits() {
return streamHits;
}
public int getStreamStatus() {
return streamStatus;
}
public int getBackupStatus() {
return backupStatus;
}
public int getStreamListed() {
return streamListed;
}
public String getStreamPath() {
return streamPath;
}
public int getStreamUpTime() {
return streamUpTime;
}
public int getBitrate() {
return bitrate;
}
public String getContent() {
return content;
}
public String getVersion() {
return version;
}
}
rootwhen you don't need it anymore. Do away withprivate Element root;and change toprotected void setVars( Element root ) { .... This will help save the memory needed to keep therootelement around all the time. \$\endgroup\$