1

我正在尝试解析一个使用

 <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
}
4

2 回答 2

0

你可以试试这个:

doc.select("strong > strong, strong:last-child");
于 2013-08-23T15:54:36.907 回答
0

试试这个

编辑

  info.select("b,strong").remove().text();
于 2013-08-23T01:46:56.737 回答