Java 如何从类名分隔的div中获取文本值?

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

我不熟悉使用Jsoup,但在从div获取文本值时遇到了一个问题,类名text是字符串。 这是a想要废弃的字符串

<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