繁体   English   中英

Jsoup HTML解析-复杂节点[Java]

[英]Jsoup HTML Parsing - Complex Nodes [Java]

我有这段HT​​ML:

<td class="my class" >
      <div class="content" style="margin-left:10px;">
        <ul style="list-style-type: disc;">
           <li><span>obj: blue</span></li>
          <li><span>descr: red</span></li>
          <li><span>double: yellow</span></li>
        </ul>
      </div>
</td>

我需要:

obj: blue

descr: red

double: yellow

我已经尝试过:

docDescription.select("my.class").text();

但是它将返回带有所有文本的块。 我需要3个不同的部分(逐行)。

docDescription.select("div > ul > li > span");

说明

您的文档无效,并且看起来像下面的JSoup。 JSoup始终尝试修复文档。 在您的情况下, td在任何table之外,因此将其删除。

<html>
 <head></head>
 <body> 
  <div class="content" style="margin-left:10px;"> 
   <ul style="list-style-type: disc;"> 
    <li><span>obj: blue</span></li> 
    <li><span>descr: red</span></li> 
    <li><span>double: yellow</span></li> 
   </ul> 
  </div> 
 </body>
</html>

public static void main(String[] args) {
    String html = "<td class=\"my class\" >\n" +
            "      <div class=\"content\" style=\"margin-left:10px;\">\n" +
            "        <ul style=\"list-style-type: disc;\">\n" +
            "           <li><span>obj: blue</span></li>\n" +
            "          <li><span>descr: red</span></li>\n" +
            "          <li><span>double: yellow</span></li>\n" +
            "        </ul>\n" +
            "      </div>\n" +
            "</td>";

    Elements select = Jsoup.parse(html).select("div > ul > li > span");
    for (Element element : select) {
        System.out.println(element.text());
    }
}

结果

obj: blue
descr: red
double: yellow

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM