Java 如何从类名分隔的div中获取文本值?
我不熟悉使用Jsoup,但在从div获取文本值时遇到了一个问题,类名text是字符串。 这是a想要废弃的字符串Java 如何从类名分隔的div中获取文本值?,java,jsoup,Java,Jsoup,我不熟悉使用Jsoup,但在从div获取文本值时遇到了一个问题,类名text是字符串。 这是a想要废弃的字符串 <body> <div class="details "> <div class="title turquoise2"> AAC-Olympia </div> <div class="subhead turquoise2"> Correspondentie-adres: </di
<body>
<div class="details ">
<div class="title turquoise2">
AAC-Olympia
</div>
<div class="subhead turquoise2">
Correspondentie-adres:
</div>
<div class="text">
Rijdt 37
<br /> 6631AP HORSSEN
<br /> 0487-541339
</div>
<div class="subhead turquoise2">
Accommodatie:
</div>
<div class="text">
Sportpark De Polenkamp
<br /> Bredestraat 3
<br /> 6631BC HORSSEN
<br /> 0487-541339
</div>
<div class="subhead turquoise2">
Opgericht:
</div>
<div class="text">
01-07-2011
</div>
<div class="subhead turquoise2">
Tenue:
</div>
<div class="text">
Shirt: Wit
<br /> Broek: Zwart
<br /> Kousen: Zwart
</div>
<div class="subhead turquoise2">
Regio:
</div>
<div class="text">
Veldregio: Regio 4 veld
<br /> Zaalregio:
</div>
<div class="subhead turquoise2">
Info:
</div>
<div class="text">
Relatienummer: NXTG36Z
<br /> Email:
<a href="mailto:janberg37@Caiway.nl">janberg37@Caiway.nl</a>
<br /> Website:
<a href="http://www.aac-olympia.nl">http://www.aac-olympia.nl</a>
<br /> District: Oost
</div>
<div class="subhead turquoise2">
Klasse(s):
</div>
<div class="text">
Klasse za:
<br /> Klasse zon: 5e klasse
<br /> Klasse zaal:
<br /> Junioren: Nee
<br /> Pupillen: Nee
<br /> Vrouwen: Nee
<br /> G-Voetbal: Nee
</div>
<div class="text">
<a href="http://downloadcentrum.knvb.nl/sportlink/knvb/document/matrix%20verenigingen%20district%20oost?id=55988">Overzicht indeling district Oost</a>
</div>
</div>
<div class="details details-functionaris">
<div class="title turquoise2">
AAC-Olympia
</div>
<div class="voorzitter">
</div>
<div class="secretaris">
</div>
<div class="penningmeester">
</div>
<div class="functionarissen">
</div>
</div>
</body>
但我想把4个文本值分开
String firstText = For this one i have no ieee what i need to do
String SecondText = Adres.getElementsByTag("br").get(0).text();//Returns Empty value
String ThirdText = Adres.getElementsByTag("br").get(1).text();//Returns Empty value
String FourthText = Adres.getElementsByTag("br").get(2).text();//returns Empty value
谁能帮帮我吗。
非常感谢。您要查找的文本不在br标记内-它在外部:
您使用的是
abcd
要使代码正常工作,它应该是:
abcd
(我很确定这是无效的)
您应该使用列表而不是
-如下所示:
<div class="text">
Sportpark De Polenkamp
<li> Bredestraat 3 </li>
<li> 6631BC HORSSEN </li>
<li> 0487-541339 </li>
</div>
波伦坎普运动公园
布雷德斯塔特3号
公元前6631年霍森
0487-541339
那么你的逻辑应该是正确的
不要忘记循环getElementsByTag
的结果,而不是对.get(x)
的硬编码调用,因为行数可能会发生变化
只是一个注释-您可能需要为这些
元素指定单独的样式,以便文本显示时不带项目符号
编辑:由于无法更改HTML,下面的代码“应该”起作用:
String SecondText=(TextNode)(Adres.getElementsByTag(“br”).get(0.nextSibling()).text()代码>
这应该得到br
元素,请求它后面的下一个节点
——它应该是包含您看到的实际文本的TextNode
。然后从文本节点
获取文本
此代码有两个问题:
我从未使用过Jsoup——所以我不知道这是否可行,我的答案是基于我的DOM知识
这看起来是一个非常容易出错的代码,如果/当网站更改结构时,可能会失败-您应该创建一个获取文本的方法,并处理该方法中的所有错误条件
检查JSoupJavadocs以了解如何使用它们的API:您可以拆分字符串并从那里开始。例如:
Element Adres = finalDocument.getElementsByClass("text").get(1);
String[] addressParts = Adres.html().split("<br />");
for (String s : addressParts) {
System.out.println(s.trim());
}
要访问地址的各个部分,只需调用索引(因为有4行,所以在0-3之间有效),例如addressParts[1].trim()代码>。我添加<代码> Times()>代码>的目的是删除字符串最初被拆分时的空白空间。谢谢你的回答,但是有一点,这个字符串文件是我从因特网上得到的,这意味着这是如何从站点看起来像http的,这是你要检查的链接。
Element Adres = finalDocument.getElementsByClass("text").get(1);
String[] addressParts = Adres.html().split("<br />");
for (String s : addressParts) {
System.out.println(s.trim());
}
Sportpark De Polenkamp
Bredestraat 3
6631BC HORSSEN
0487-541339