Jsoup:;在 内
根据这个答案:
HTML 4.01 指定 元素 只能包含内联元素。一个
但...
HTML5 允许 要包含的元素 块。
好吧,我只是尝试在 块中选择
,使用:
Elements elems = a.select("m");
并且 elmes 返回空,尽管 div 是那里。
所以我在想:要么我没有使用正确的语法来选择 a 中的 div,要么... Jsoup 不支持这个仅 HTML5 的功能?
在 a
中选择 div
的正确 Jsoup 语法是什么?
更新:我刚刚尝试过
Elements elems = a.getElementsByClass("m");
,Jsoup 没有任何问题(即它返回 a 中此类 div 的正确数量)。
所以我现在的问题是:为什么?
为什么 a.getElementsByClass("m")
有效,而 a.select("m")
无效?
更新:我刚刚尝试过,按照@Delan Azabani 的建议:
Elements elems = a.select(".m");
它有效。所以基本上 a.select()
可以工作,但我缺少类名前面的 .
。
According to this answer:
HTML 4.01 specifies that <a> elements
may only contain inline elements. A
<div> is a block element, so it may
not appear inside an <a>.
But...
HTML5 allows <a> elements to contain
blocks.
Well, I just tried selecting a <div class="m">
within an <a>
block, using:
Elements elems = a.select("m");
and elmes returns empty, despite the div being there.
So I am thinking: Either I am not using the correct syntax for selecting a div within an a or... Jsoup doesn't support this HTML5-only feature?
What is the right Jsoup syntax for selecting a div
within an a
?
Update: I just tried
Elements elems = a.getElementsByClass("m");
And Jsoup had no problems with it (i.e. it returns the correct number of such divs within a).
So my question now is: Why?
Why does a.getElementsByClass("m")
work whereas a.select("m")
doesn't?
Update: I just tried, per @Delan Azabani's suggestion:
Elements elems = a.select(".m");
and it worked. So basically the a.select()
works but I was missing the .
in front of the class name.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
select
函数采用一个选择器。如果您传递'm'
作为参数,它会尝试查找a
元素的子元素m
元素。您需要传递'.m'
作为参数,这将在a
元素下查找具有m
类的元素。The
select
function takes a selector. If you pass'm'
as the argument, it'll try to findm
elements that are children of thea
element. You need to pass'.m'
as the argument, which will find elements with them
class under thea
element.当前版本的 jsoup (1.5.2) 支持
div
标签嵌套在a
标签内。在这种情况下,我建议打印出解析树,以确保 jsoup 已按照您的预期解析了 HTML,或者如果它不知道要使用什么正确的选择器。
例如:
给出:
The current version of jsoup (1.5.2) does support
div
tags nested withina
tags.In situations like this I suggest printing out the parse tree, to ensure that jsoup has parsed the HTML like you expect, or if it hasn't to know what the correct selector to use.
E.g.:
Gives: