2013-05-04 47 views
0

這是我的問題,我有這樣的HTML代碼。如何選擇文本outsude div與Jsoup

<div class="article"> 
    "Some text over here" 
     <div class="ads"> 
      "ads text over here" 
     </div> 
<div> 

我想要做的是,我想從DIV CLASS =「ARTIKEL」文本。

現在,我已經試過這個jsoup代碼。

doc.select("div[class=article]").text(); 

但我從該代碼得到的是

「有人在這裏廣告的文字在這裏文本」

我真正想要的是隻得到

「這裏的一些文字」

有沒有人可以幫助我只使用jsoup的CSS選擇器來獲取文本?

我不想使用任何字符串庫。

謝謝。

回答

2

您可以使用ownText()排除所有所選元素的含有標籤元素:

doc.select("div.article").first().ownText(); 

另外,根據您的要求,您可能會感興趣的textNodes()太:

For example, with the input HTML: 
<p>One <span>Two</span> Three <br> Four</p> with the p element selected: 

p.text() = "One Two Three Four" 
p.ownText() = "One Three Four" 
p.children() = Elements[<span>, <br>] 
p.childNodes() = List<Node>["One ", <span>, " Three ", <br>, " Four"] 
p.textNodes() = List<TextNode>["One ", " Three ", " Four"] 
+0

這是我尋找的..謝謝肯! – 2013-05-05 06:54:07

0

你可以這樣做,就像 doc.select(「div.article」)。text()。substring(0,22);

+0

戴文, 感謝您的回答。但我只想使用CSS選擇器來獲取文本。 – 2013-05-04 07:50:39

+0

如果你要選擇「文章」類的文本,所以它會顯示類「文章」中的所有文本,所以可能是我錯了,但我想這是不可能得到'在這裏的一些文本'使用doc.select(「div [class = article]」)。text();你將不得不使用doc.select(「div [class = article]」)。text()。substring(0,22);爲此......請更新我的評論,如果你找到一個好方法做到這一點..謝謝 – 2013-05-04 08:05:55