我是使用Jsoup的新手,我有一个问题是从div获取文本值,并将类名文本作为字符串。 这是想要废弃的字符串。
<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>
我想从第二个div获取类名文本后面的信息,我尝试下面的代码,但给我空字符串,
Element Adres = finalDocument.getElementsByClass("text").get(1);
String AllTextValue = Adres.text();//This give me all information from the div
但我希望所有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
有人可以帮助我吗? 非常感谢。
答案 0 :(得分:1)
您要查找的文字不在 br 标记内 - 它在外面:
您使用<br /> abcd
为了使您的代码可以工作,它应该是:<br>abcd</br>
(我很确定无效)
您应该使用列表而不是<br>
- 就像这样:
<div class="text">
Sportpark De Polenkamp
<li> Bredestraat 3 </li>
<li> 6631BC HORSSEN </li>
<li> 0487-541339 </li>
</div>
然后你的逻辑应该有效。
不要忘记循环getElementsByTag
的结果,而不是对.get(x)
的硬编码调用,因为行数可能会发生变化。
只需注意 - 您可能需要为这些<li>
元素指定单独的样式,以便文本显示时没有项目符号。
编辑:由于无法更改HTML,以下代码“应该”有效:
String SecondText = (TextNode)(Adres.getElementsByTag("br").get(0).nextSibling()).text();
这应该得到br
元素,请求后面的Node
- 应该是包含您看到的实际文本的TextNode
。然后从TextNode
。
此代码存在两个问题:
检查Jsoup javadocs如何使用他们的API:http://jsoup.org/apidocs/org/jsoup/nodes/Element.html
答案 1 :(得分:1)
你可以拆分字符串并从那里开始。例如:
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
要访问地址的各个部分,只需调用索引(从0到3有效,因为有4行),例如addressParts[1].trim();
。我添加trim()
的原因是为了删除最初拆分时String周围的空白区域。