【问题标题】:Output text based on a following element criteria基于以下元素条件的输出文本
【发布时间】:2016-08-22 04:11:01
【问题描述】:
<div class="item-container">
    <h4 class="title">Item 1</h4>
    <h4 class="impact"><i class="exclamation point"></i>Impact:High</h4>
</div>


<div class="item-container">
    <h4 class="title">Item 2</h4>
</div>

我需要一个 jsoup 大师。

我只想获取文本“Item 1”(只有 h4 和紧随其后的另一个类“impact”)。我该怎么做?

到目前为止,我只能从正确的类中获取所有 h4,但无法根据周围元素过滤输出:

import java.io.File;
import java.io.IOException;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;

public class GetItem {

public static void main(String[] args) throws IOException {

    File input = new File("D:\\html.html");
    Document doc = Jsoup.parse(input, "UTF-8");

    Elements div = doc.select("div.item-container");
    Elements h4 = doc.select("div.item-container > h4.title");

    for (int i = 0; i < h4.size(); i++) {
        System.out.println("Item: " + h4.get(i).text());
    }
  }
}

【问题讨论】:

    标签: jsoup


    【解决方案1】:

    你可以使用下面的代码(我用Jsoup 1.9.2测试过):

    File input = new File("D:\\html.html");
    Document doc = Jsoup.parse(input, "UTF-8");
    Elements h4 = doc.select("div.item-container > h4.title");
    
    for (Element e : h4) {
        if (e.nextSibling() != null && e.nextElementSibling().hasClass("impact")) {
            System.out.println("Item: " + e.text());
    }
    

    我们的想法是像您一样获取所有 h4 elemnets,并测试它们中的每一个是否有兄弟姐妹,如果有,如果兄弟姐妹有 impact 类。

    【讨论】:

      猜你喜欢
      • 2015-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-08
      • 2018-05-12
      • 2019-10-04
      • 1970-01-01
      相关资源
      最近更新 更多