问题描述
我正在尝试解析 RSS 提要。为此,我有一个 RSSHandler。
public class RSSHandler extends DefaultHandler {
boolean item = false;
int DATA_VALUE = 0;
private static ArrayList<String> photoUrl = new ArrayList<>();
private static ArrayList<String> title = new ArrayList<>();
private static ArrayList<String> hits = new ArrayList<>();
private static StringBuffer RSSResult = new StringBuffer();
public static StringBuffer getRSSResult() {
return RSSResult;
}
public void setRSSResult(StringBuffer RSSResult) {
this.RSSResult = RSSResult;
}
@Override
public void startElement (String uri,String localName,String qName,Attributes attrs) throws SAXException {
DATA_VALUE = 0;
if (localName.equals("item")) {
item = true;
if (RSSResult != null && RSSResult.length() > 0) {
Feed.add(getRSSResult());
setRSSResult(new StringBuffer("\n"));
}
}
if (item) {
if (localName.equals(Constants.RSS_TITLE)) {
DATA_VALUE = 1;
} else if (localName.equals(Constants.RSS_LINK)) {
} else if (localName.equals(Constants.RSS_DESCRIPTION)) {
} else if (localName.equals(Constants.RSS_PUB_DATE)) {
} else if (localName.equals(Constants.RSS_SOURCE)) {
} else if (localName.equals(Constants.RSS_PICTURE)) {
DATA_VALUE = 2;
} else if (localName.equals(Constants.RSS_HITS)) {
DATA_VALUE = 3;
} else if (localName.equals(Constants.RSS_NEWS_TITLE)) {
DATA_VALUE = 1;
} else if (localName.equals(Constants.RSS_NEWS)) {
}
}
}
@Override
public void endElement(String namespaceURI,String qName) throws SAXException {
}
public void characters(char[] ch,int start,int length) throws SAXException {
String cdata = new String(ch,start,length);
if (DATA == 1) {
title.add(cdata.trim())
} else if (DATA == 2) {
photoUrl.add(cdata.trim())
} else if (DATA == 3) {
hits.add(cdata.trim())
}
}
}
我怎样才能避免在两个函数中使用如此多的 if-else——startElement() 和 characters()。我正在考虑使用一个临时数组列表并将其映射到所需的 Arraylist——(photoUrl、标题或点击数),就像在 C 中使用指针一样。
我能否避免在我的任务中为不同类型的字符串使用如此多的数组列表?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)