2013-04-25 6 views
7

jsoupを使用して各タグの後にテキストを抽出します。それを直接選択する方法はありますか、またはすべての点で.substringを実行する必要がありますか?Jsoupタグの後にテキストを選択

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

答えて

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()); 
} 

出力

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

ありがとうございました。正確に私が必要としたもの。 – Mintz

+0

優秀、ありがとう! – Dax

0

はい、できます。

  1. <a>要素を取得し、それが<a>要素のHTML
  2. の長さを取得するHTML
  3. のget最初<div>のHTMLを取得し、その後.html()
  4. を使用することによって、そのHTMLを選択するには、最初の部分を除外します。
0

解決策の方向性を提示しているにもかかわらず、上記の答えは普遍性に欠けると思います。

nextSibling()は、html構造が変更されている間は使用できません。

私はJsoup APIを参照すると、textNodes()という名前のメソッドが見つかりました。これは、この要素からテキストノードのリストを取得できます。

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

希望します。

関連する問題