0

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

我如何从这个html标签中提取值示例和示例1..使用jsoup ..

4

1 回答 1

3

由于此 HTML 的语义不足以满足您的最终目的(a<br>不能有子级且:不是 HTML),因此您无法使用 Jsoup 之类的 HTML 解析器做很多事情。HTML 解析器并不打算完成特定文本提取/标记化的工作。

您可以做的最好的事情是获取<div>使用 Jsoup 的 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());
    }
}

这导致

例子
示例1

如果我是 HTML 作者,我会为此使用定义列表。例如

<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());
}
于 2010-08-11T21:49:15.810 回答