0
测试:例如
TEST1:例1
Elements size = doc.select("div:contains(test:)");
我怎样才能提取值示例和示例1从该HTML标记....使用jsoup ..jsoup标签提取问题
Elements size = doc.select("div:contains(test:)");
我怎样才能提取值示例和示例1从该HTML标记....使用jsoup ..jsoup标签提取问题
由于该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());
}