【发布时间】:2013-04-06 04:05:14
【问题描述】:
我使用 getElementBytag 方法从以下 XML 文档中提取数据(雅虎财经新闻 api http://finance.yahoo.com/rss/topfinstories)
我正在使用以下代码。它使用 getelementsBytag 方法获取新项目和标题没有问题,但由于某种原因,在按标签搜索时不会拾取链接。它只获取链接元素的结束标签。是xml文档的问题还是jsoup的问题?
import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
class GetNewsXML {
/**
* @param args
*/
/**
* @param args
*/
public static void main(String args[]){
Document doc = null;
String con = "http://finance.yahoo.com/rss/topfinstories";
try {
doc = Jsoup.connect(con).get();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Elements collection = doc.getElementsByTag("item");// Gets each news item
for (Element c: collection){
System.out.println(c.getElementsByTag("title"));
}
for (Element c: collection){
System.out.println(c.getElementsByTag("link"));
}
}
【问题讨论】:
-
您提供的链接的页面来源是一个xml文档。检查以下帖子 stackoverflow.com/questions/9886531/how-to-parse-xml-with-jsoup 或使用 xml 解析器
-
我可以解析其中所有标签的所有数据,但出于某种奇怪的原因, 标签的内容除外。我使用过 doc.select 和 getElementBytag。两者都适用于除 标签之外的所有其他标签。当我尝试获取 标记的内容时,我得到以下输出:
-
基于我提供的链接,只需将 try .. catch 中的行替换为以下内容即可: doc = Jsoup.parse(new URL(con).openStream(), " ", Parser.xmlParser());
-
您可以定义一个输入流变量,以便在操作完成后关闭它。