2011-08-23 67 views

回答

24

幾種方法。這真的取決於文檔本身以及給定的HTML標記是否一致。在這個特定的例子中,您可以通過Element#childNodes()得到td的子節點,然後如果它是TextNode或者不是,則單獨測試每個節點。

E.g.

Element td = getItSomehow(); 

for (Node child : td.childNodes()) { 
    if (child instanceof TextNode) { 
     System.out.println(((TextNode) child).text()); 
    } 
} 

導致

 
TextA 
TextB 

我認爲這將是很好,如果Jsoup提供了一個Element#textNodes()什麼讓孩子文本節點等爲Element#children()確實得到(這將返回的子元素您示例中的<br />元素)。

+15

我已經爲1.6.2實現了Element#textNodes(),感謝您的建議。 https://github.com/jhy/jsoup/commit/7b9f17760049161b775fd23b15653961620e259d –

+1

@JonathanHedley你是一個拯救生命的人!我爲你的辛勤工作感激不盡。您的代碼和評論是完美的,並節省了我幾個小時的Google和StackOverflow。 – stackular