2013-04-25 39 views
7

Tôi muốn trích xuất văn bản sau mỗi thẻ bằng cách sử dụng jsoup. Có cách nào để chọn nó trực tiếp hay tôi phải thực hiện .substring trên toàn bộ điều?Jsoup chọn văn bản sau thẻ

<div> 
<a href="#"> I don't want this text </a> 
**I want to retrieve this text** 
</div> 

Trả lời

22
public static void main(String... args) throws IOException { 

    Document document = Jsoup.parse("<div>" 
      + "<a href=\"#\"> I don't want this text </a>" 
      + "**I want to retrieve this text**" + "</div>"); 

    Element a = document.select("a").first(); 

    Node node = a.nextSibling(); 
    System.out.println(node.toString()); 
} 

Output

**I want to retrieve this text** 
+0

Cảm ơn. Chính xác những gì tôi cần. – Mintz

+0

Tuyệt vời, cảm ơn! – Dax

0

Có bạn có thể.

  1. lấy html của <div> đầu tiên, và sau đó chọn html của nó bằng cách sử dụng .html()
  2. được <a> yếu tố, và làm cho nó là html
  3. có được chiều dài của html <a> yếu tố của
  4. loại trừ phần đầu.
0

Tôi nghĩ câu trả lời ở trên thiếu phổ quát mặc dù cung cấp hướng giải quyết.

nextSibling() không hoạt động khi cấu trúc html bị thay đổi.

Khi tôi tham chiếu đến Jsoup api, tôi đã tìm thấy phương thức có tên textNodes(), có thể lấy danh sách nút văn bản từ phần tử này.

public static String getTextAfterTag(Element ele) { 
    String text = ""; 
    for(TextNode node: ele.textNodes()) { 
    text += node.text(); 
    } 
    return text; 
} 

hy vọng sẽ trợ giúp.

Các vấn đề liên quan