使用select时,Jsoup忽略嵌套标记

时间:2013-08-23 01:17:56

标签: java jsoup

我正在尝试解析使用

的网站
 <b>Header</b>Data<strong>Header</strong>Data

所以我有一个选择器

.select("b, strong") 

然后尝试在之间提取文本。 - 一切都很好。

问题:有时网站有例如。

<strong><strong>HeaderX</strong><br /></strong>Data

现在这与我的循环混乱,因为我会得到文本headerX两次,我怎么能忽略嵌套的强?

更新#1 解决了,但可能有更好的方法。

Elements selected = info.select("b, strong");
Element next = selected.get(0);
Element now = null;
for (int i = 0; next != null ;i++) {
    now = next;
    next = null;
    Elements children = now.getAllElements();
    for (;selected.size() > i; i++) {
        next = selected.get(i);
        if (!children.contains(next)) {
            break;
        }
    }
    //Do whatever with now & next
}

2 个答案:

答案 0 :(得分:0)

试试这个

修改

  info.select("b,strong").remove().text();

答案 1 :(得分:0)

你可以试试这个:

doc.select("strong > strong, strong:last-child");