Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Android上使用JSoup在单独的行中提取相同html标记的文本_Android_Html_Kotlin_Jsoup - Fatal编程技术网

在Android上使用JSoup在单独的行中提取相同html标记的文本

在Android上使用JSoup在单独的行中提取相同html标记的文本,android,html,kotlin,jsoup,Android,Html,Kotlin,Jsoup,我有以下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&

我有以下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>
输出:

Text 1 Text 2 Text 3 Text 4 Text 5 Text 6
但我想把它们分为几行:

Text 1
Text 2
Text 3
Text 4
Text 5
Text 6

你们知道怎么可能吗

您的
li
-元素不包含新行,这就是为什么如果您打印文本,文本只会附加在末尾


实际上,您正在对
元素
使用
text()
,这些元素由
select
返回。您需要首先将每个条目映射到文本(
eachText()
map{it.text()}
),并将所有返回的条目追加到数据库中,或者直接使用
println
打印它们,或者在打印之前在末尾添加首选的新行字符。顺便说一下,您没有提到如何打印文本,但是我认为这对于解决您的问题并不重要。

您的
元素
对象实际上是一个对象,它有一个方法返回一个
列表
,其中包含每个匹配元素的文本

另一方面,该方法返回“所有匹配元素的组合文本”(正如@Roland所说,它没有换行符,这就是为什么所有元素都在一行上)

所以,一般来说,你应该做如下事情:

doc.select("xxx").eachText().forEach(::println)

很抱歉,我没有理解您所说的“在末尾添加首选新行字符”的意思。根据打印方式,您可能需要自己添加新行字符(
\n
\r\n
,或…),由于您的
li
-文本不包含任何内容。我将
val文本
存储在数据库中,然后从数据库中检索并在文本视图中显示。应该是
。forEach(::println)
。只是看到
forEach
map
eachText
实际上丢失了太晚了:-)好吧。。。在飞行中写它,并把链接放在上面。。。很好;-)
doc.select("xxx").eachText().forEach(::println)