我是Java的新手,我们获得了有关XML Parsing的任务。我们已经完成了DOM,现在我们在SAX上了。这就是我使用SAX Parser解析rss feed的原因。它已经在处理文件但是当我尝试解析在线rss feed时,它返回一个错误403.我没有尝试在DOM上解析同一个站点,因为我的笔记本电脑太慢了,我只需要5分钟打开一个文件。
感谢您的帮助。
public class NewsHandler extends DefaultHandler {
private String url = "http://tomasinoweb.org/feed/rss";
private boolean inDescription = false;
private String[] descs = new String[11];
int i = 0;
public void processFeed() {
try {
SAXParserFactory factory =
SAXParserFactory.newInstance();
SAXParser parser = factory.newSAXParser();
XMLReader reader = parser.getXMLReader();
reader.setContentHandler(this);
InputStream inputStream = new URL(url).openStream();
reader.parse(new InputSource(inputStream));
} catch (Exception e) { e.printStackTrace(); }
}
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
if(qName.equals("description")) inDescription = true;
}
public void characters(char ch[], int start, int length) {
String chars = new String(ch).substring(start, start + length);
if(inDescription) descs[i] = chars;
}
public void endElement(String uri, String localName, String qName) throws SAXException {
if(qName.equals("description")) {
inDescription = false;
i++;
}
}
public String getDesc(int index) { return descs[index]; }
public static void main(String[] args) {
NewsHandler nh = new NewsHandler();
nh.processFeed();
for(int i=0; i<10; i++) {
System.out.println(nh.getDesc(i));
}
}
}
答案 0 :(得分:0)
解决方案:
我使用String url = "url"
和URL url = new URL("url")
,然后使用URLConnection con = url.openConnection()
,而不是con.addRequestProperty("user-agent", user-agent string)
;