我有这个html代码:
<li itemprop="something">Text 1</li><li itemprop="something">Text 2</li><li itemprop="something">Text 3</li><li itemprop="something">Text 4</li><li itemprop="something">Text 5 </li><li itemprop="something">Text 6 </li>
当我使用以下代码提取文本时,它使我连续。
val doc = Jsoup.parse(html)
val element = doc.select("li[itemprop=something]")
val text = element.text()
输出:
Text 1 Text 2 Text 3 Text 4 Text 5 Text 6
但我希望它们分开显示:
Text 1
Text 2
Text 3
Text 4
Text 5
Text 6
你们知道这怎么可能吗?
答案 0 :(得分:1)
您的element
对象实际上是一个Elements
对象,它具有一个eachText()
方法,该方法返回一个List
,其中包含每个匹配元素的文本。
另一方面,text()
方法返回“所有匹配元素的组合文本”(如@Roland所说,没有换行符,这就是为什么将所有元素都放在一行上的原因。) / p>
因此,通常,您应该执行以下操作:
doc.select("xxx").eachText().forEach(::println)
答案 1 :(得分:0)
您的li
元素不包含换行符,这就是为什么在打印时仅在文本末尾附加内容。
您实际上是在text()
返回的Elements
上使用select
。您要么需要先将每个条目映射到文本(eachText()
或map { it.text() }
),然后将所有返回的条目附加到数据库中,要么直接使用println
打印它们,或者在以下位置添加您喜欢的换行符最后打印之前。顺便说一句,您没有提到如何打印文本,但是,我认为这对解决您的问题并不重要。