最近开始编写Android Java(Eclipse),我试图使用jsoup创建一个简单的阅读器应用程序。
我有这样的HTML;
<article id="id" class="artikel">
<h1>Title</h1>
<p>paragraph 1</p>
<p>paragraph 2</p>
<p>paragraph 3</p>
</article>
<article id="id">
<p>comment1</p>
</article>
<article id="id">
<p>comment2</p>
</article>
段落数量是可变的。评论的数量也是如此。 我想得到文章中的所有段落,没有评论。 真正的文章总是第一篇文章标签,所以我使用first()结合通配符来获取它。
这是Im使用的方法;
public String GetArticleBody(Document adoc)
{
//Document totalbody = (Document)adoc.select("article *").first();
//Element totalbody = adoc.select("article *").first();
//Elements paragraphs = adoc.select("article * > p);
Elements paragraphs = adoc.select(".article* p");
String body = "test";
for (Element p : paragraphs)
{
body = StringAttacher(body, p.text());
}
System.out.println(body);
return body;
}
正如你所看到的那样,我一直在使用食谱中的方法和我在SOF上找到的一些方法。 从所有这些方法中我所得到的只是测试一词或者根本没有。
有人能指出我正确的方向来获取这些段落吗?
答案 0 :(得分:2)
您遇到的问题是在第一个语句中使用了错误的选择器。
.
是“类”选择器,所以你要么“文章”拼写错误,要么你不应该.
。
请改为尝试:
public String GetArticleBody(Document adoc)
{
//Document totalbody = (Document)adoc.select("article *").first();
//Element totalbody = adoc.select("article *").first();
//Elements paragraphs = adoc.select("article * > p);
Elements paragraphs = adoc.select("article").first().select("p");
String body = "test";
for (Element p : paragraphs)
{
body = StringAttacher(body, p.text());
}
System.out.println(body);
return body;
}
这将为您提供第一篇文章中的段落。
此外,通常有助于记住jsoup选择器与CSS选择器(以及jQuery选择器的子集)中使用的选择器相同。您从其他领域获得的任何知识都可以直接用于jsoup。