Java Android:使用JSoup从Html检索多个元素
我想从Java Android:使用JSoup从Html检索多个元素,java,android,jsoup,Java,Android,Jsoup,我想从div中检索标题,开始时间和结束时间所有这些都是从一个名为day的大型div中检索的,在另一个名为event的div中检索的 我需要将这些项目放入列表,但现在我被困在这里,因为它无法检索我的3个元素 Document doc = Jsoup.connect("http://terry.gonguet.com/cal/?g=tp11").get(); Elements days = doc.select("div[class=day]"); Elements event = doc.sele
div
中检索标题
,开始时间
和结束时间
所有这些都是从一个名为day
的大型div中检索的,在另一个名为event
的div中检索的
我需要将这些项目
放入列表
,但现在我被困在这里,因为它无法检索我的3个元素
Document doc = Jsoup.connect("http://terry.gonguet.com/cal/?g=tp11").get();
Elements days = doc.select("div[class=day]");
Elements event = doc.select("div[class=event]");
for(Element day : days)
{
System.out.println(" : " + day.text());
for(Element ev : event)
{
Element title = ev.select("div[class=title]").first();
Element starthour = ev.select("div[class=bub right top]").first();
Element endhour = ev.select("div[class=bub right bottom]").first();
System.out.println(title.text()+starthour.text()+endhour.text());
}
}
该文档中没有一个div只有day
作为类参数。它们都有day
类与另一个类组合,该类阻止div[class=day]
找到此类div。同样的问题也适用于div[class=event]
选择器
要解决此问题,请使用CSS查询语法,其中使用
运算符来描述类属性
(提示:如果要选择类很少的元素,可以使用element.class1.class2
)
所以不是
select("div[class=day]");
select("div[class=event]");
ev.select("div[class=bub right top]");
ev.select("div[class=bub right bottom]");
使用
也代替
select("div[class=day]");
select("div[class=event]");
ev.select("div[class=bub right top]");
ev.select("div[class=bub right bottom]");
你可以尝试使用
ev.select("div.bub.right.top");
ev.select("div.bub.right.bottom]");
这将允许您找到包含所有这些类的div(即使它们的顺序不同,或者选择器中提到了更多的类)。我不能确切地说您想要获得哪些元素,因此我无法进一步帮助您。请随意对这个答案发表评论(有帮助吗,你还有其他问题吗)。好吧,这样看起来效果更好。唯一有效的想法是,我正在尝试让一个div作为3个类:bub右下角,这样我也可以得到一个元素?同样的道理:bub对吗top@yoyani如果您有一个包含三个类的div:bub right bottom,请使用以下CSS查询来选择它:div.bub.right.bottom
@yoyani正如我在回答中所说,如果您有包含许多类的元素,则可以使用表单element.class1.class2
,因此,可以使用CSS查询div.bub.right.bottom
选择类为bub right-bottom
的div。但是如果你想找到只有这些类的div(并且在class=
属性中没有提到其他类),那么选择(“div[class=bub right-bottom]”
应该可以。更准确地说,如果我们有像
这样的div.foo.bar
会找到它们(尽管类属性中的值的顺序不同,而且可能有比所选的更多的类)。但是div[class=foo bar]
将只找到
(其余部分将被忽略,因为[attribute=text]
选择器正在将文本作为字符串与'bar foo'!='foo bar'
,与foo bar baz
相同)。