簡體   English   中英

Jsoup:從所有子元素中獲取文本

[英]Jsoup: get text from all children elements

在我嘗試解析的文檔中有這個元素:

<span class="location accessible-contrast-color-location">
    Seattle, WA 98104 
    <span style="font-size: smaller">(Downtown area)</span>
</span>

我嘗試從中獲取文本Seattle, WA 98104 (Downtown area) ,但只能使用以下代碼獲取Seattle, WA 98104

Element locationElement = companyWrapper.selectFirst(".location");
System.out.println((locationElement != null ? locationElement.text() : ""));

我認為text()應該在父元素及其子元素中都包含文本,但似乎並非如此?

編輯

Elements jobElements  =
        doc.select(".jobsearch-SerpJobCard.unifiedRow");
Element companyWrapper = jobElement.selectFirst(".sjcl");

解決方案1

您可以通過 CSS 類名獲取元素文本。 為此,您必須使用doc.select("span.location").text();

在這種情況下,您有一個具有一個子節點的元素,當您調用text方法時,將獲取主節點(西雅圖,WA 98104)及其子節點(市區)的文本。

代碼如下

   public static void main(String[] args) {


    String html = "<span class=\"location accessible-contrast-color-location\">" +
            "Seattle, WA 98104" +
            "<span style=\"font-size: smaller\">(Downtown area)</span>" +
            "</span>";


    Document doc = Jsoup.parse(html);
    String result = doc.select("span.location").text();
    System.out.println(result);


}

解決方案2

您還可以使用tag名稱來獲取它及其子項的文本。

我在 span tag的幫助下編寫了您的場景。

   public static void main(String[] args) {


        String html= "<span class=\"location accessible-contrast-color-location\">" +
                "Seattle, WA 98104" +
                "<span style=\"font-size: smaller\">(Downtown area)</span>" +
                "</span>";


        Document doc = Jsoup.parse(html);
        String result= doc.select("span").first().text();
        System.out.println(result);
    }

請注意,由於您需要兩個文本,因此必須獲取第一個span標簽,因為它包含子標簽,因此您可以獲取父標簽文本 ((Seattle, WA 98104)) 以及子標簽文本(市區)從中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM