在IBM這篇XML的文章中,提供了很好的XML解譯方式
加上小小的修改,成為想要的流程

這樣就可以只要增修 Handler (extends from XmlHandler) 就可處理其他 Xml format
(Entity 好像也應該要變成 Interface or Abstract Object ??)
public interface FeedParser {
List parse();
}
public abstract class BaseFeedParser implements FeedParser {
private final URL feedUrl;
protected BaseFeedParser(String feedUrl){
try {
this.feedUrl = new URL(feedUrl);
} catch (MalformedURLException e) {
throw new RuntimeException(e);
}
}
protected InputStream getInputStream() {
try {
return feedUrl.openConnection().getInputStream();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
public class SaxFeedParser extends BaseFeedParser {
private XmlHandler handler;
public SaxFeedParser(String feedUrl){
super(feedUrl);
}
public List parse() {
SAXParserFactory factory = SAXParserFactory.newInstance();
try {
SAXParser parser = factory.newSAXParser();
parser.parse(this.getInputStream(), handler);
return handler.getMessages();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
public void setHandler(XmlHandler handler) {
this.handler = handler;
}
}
public abstract class XmlHandler extends DefaultHandler {
public abstract List getMessages();
}