如何选择文本outsude div与Jsoup

问题描述:

这是我的问题,我有这样的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选择器来获取文本?

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

谢谢。

您可以使用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

你可以这样做,就像 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