2010-08-06 113 views
0

测试:例如
TEST1:例1
Elements size = doc.select("div:contains(test:)"); 

我怎样才能提取值示例和示例1从该HTML标记....使用jsoup ..jsoup标签提取问题

回答

3

由于该HTML是没有足够的语义来达到最终目的(一个<br>不能有孩子,而:不是HTML),所以对于像Jsoup这样的HTML解析器来说,你做不了什么。 HTML解析器不适合执行特定的文本文字的提取/标记。

最好的办法是使用Jsoup获取<div>的HTML内容,然后使用通常的java.lang.String或者java.util.Scanner方法进一步提取该内容。

这里有一个开球例如:

String html = "<div style=\"height:240px;\"><br>test: example<br>test1:example1</div>"; 
Document document = Jsoup.parse(html); 
Element div = document.select("div[style=height:240px;]").first(); 

String[] parts = div.html().split("<br />"); // Jsoup transforms <br> to <br />. 
for (String part : parts) { 
    int colon = part.indexOf(':'); 
    if (colon > -1) { 
     System.out.println(part.substring(colon + 1).trim()); 
    } 
} 

这导致

 
example 
example1 

如果我是HTML作者,我会用这个definition list。例如。

<dl id="mydl"> 
    <dt>test:</dt><dd>example</dd> 
    <dt>test1:</dt><dd>example1</dd> 
</dl> 

这是多个语义,从而更容易可解析:

String html = "<dl id=\"mydl\"><dt>test:</dt><dd>example</dd><dt>test1:</dt><dd>example1</dd></dl>"; 
Document document = Jsoup.parse(html); 
Elements dts = document.select("#mydl dd"); 
for (Element dt : dts) { 
    System.out.println(dt.text()); 
}