我正在使用jsoup迭代元素列表,但是需要定期找到一个不会在当前元素之后直接出现的元素。
例如,如果我正在迭代并转到img
标记,我想找到在a
标记之后发生的下一个img
标记。但是,两者之间可能会有一些标签。
以下是一些示例代码:
for (Element e : elements) {
if (e.tagName().equalsIgnoreCase("img")) {
// Do some stuff with "img" tag
// Now, find the next tag in the list with tag <a>
}
// Do some other things before the next loop iteration
}
我认为像e.select("img ~ a")
之类的东西应该有用,但它不会返回任何结果。
在jsoup中这样做的好方法是什么?
答案 0 :(得分:4)
这似乎是实现既定目标的 方式。不确定它是最有效的,但它是最直接的。
Element node = e.nextElementSibling();
while (node != null && !node.tagName().equalsIgnoreCase("a")) {
node = node.nextElementSibling();
}
我希望有办法运行相当于e.nextElementSibling("a")
的方法。或许我可以回馈jsoup; - )
答案 1 :(得分:0)
使用nextElementSibling()方法。
在if语句中添加以下代码:
Element imgNext = e.nextElementSibling();
do {
Element a = imgNext.select("a[href]").first();
} while (imgNext!=null && a==null);