我正在使用 sax 解析器解析 xml 文件。该 xml 文件在带有下一个属性的链接标记中包含指向另一个 xml 文件的链接。我必须继续阅读,直到最后一个没有下一个属性的 xml 文件。以下是xml文件:
<link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://gdata.youtube.com/feeds/api/videos/EokUNzGJBI8/comments" />
<link rel="http://schemas.google.com/g/2005#batch" type="application/atom+xml" href="http://gdata.youtube.com/feeds/api/videos/EokUNzGJBI8/comments/batch" />
<link rel="self" type="application/atom+xml" href="http://gdata.youtube.com/feeds/api/videos/EokUNzGJBI8/comments?start-index=1&max-results=25" />
<link rel="next" type="application/atom+xml" href="http://gdata.youtube.com/feeds/api/videos/EokUNzGJBI8/comments?start-index=26&max-results=25" />
我尝试了以下方法:
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser saxParser = factory.newSAXParser();
DefaultHandler handler = new DefaultHandler() {
boolean content=false;
int i=0;
public void startElement(String uri, String localName,String qName,
Attributes attributes) throws SAXException {
if (qName.equalsIgnoreCase("Content")) {
content = true;
i+=1;
}
if(qName.equalsIgnoreCase("Link") && attributes.getValue("rel").equalsIgnoreCase("next")){
l=attributes.getValue("href");
u=true;
}
}
要递归读取上面返回的 url,l
我执行以下操作:
saxParser2.parse(new InputSource(ur.openStream()), handler);//to read original url
while(l!=null)
{
urs=new URL(l); //successive urls
saxParser.parse(new InputSource(urs.openStream()), handler);
}
在上一个 xml 中找不到下一个后,上面继续打印最后一个响应。