0

我正在从以下 html 元素中提取文本

<span class="adr" style="float: none !important;">
     <span class="street-address" style="float: none !important;">18, Jawaharlal Nehru
       Road,
     </span>
     <span  style="float: none !important;" class="estb_addr-HeadingTxt">
       <a style="float: none !important;"   href="http://kolkata.burrp.com/area/park-street" class="locality">&nbsp;Park Street</a></span>
       ,&nbsp;Kolkata<span class="region" style="display: none;">Kolkata
     </span>
</span>

为此,我编写了以下代码:

for (Element element : doc.getAllElements()) 
{
        for(Element childelem: element.children())
           {
             if (childelem.hasText() && !childelem.ownText().isEmpty()) 
                {

                     String currText=childelem.ownText();
                     System.out.print(currText+" ");

                  }

            }
         System.out.println("");
 }

理想情况下,输出应该是18, Jawaharlal Nehru Road, Park Street, Kolkata。但它是给18,贾瓦哈拉尔尼赫鲁路,加尔各答公园街。我可以理解,输出基本上是对以外部 <span> 为根的 DOM 树的顺序遍历。但我不知道如何通过 Jsoup 实现这一点,其中 HTML 页面中元素的 DOM 树具有任意级别的嵌套。

任何帮助,将不胜感激。谢谢你。

4

1 回答 1

0

使用 DOM 导航或 CSS 选择器语法来完成任务,不要循环遍历所有Elements.

Element adr = doc.select("span.adr").first().
System.out.println(adr.text());
于 2013-02-27T03:12:40.673 回答