1
<td valign="top" width="230">
<div>
<b><a href="http://www.cs.cornell.edu/johannes/">Johannes Gehrke</a></b>
</div>
<div class="small">
Professor<br>Computer Science, CS Field Member<br>Director of Graduate Studies<br>
Ph.D., Univ of Wisconsin, Madison, 1999<br><b>Research focus:</b> Database systems, data mining, and data privacy
</div>
</td>

我想从给定的 html 字符串中获取标签序列。最简单的方法是什么?例如,以上面的 html 字符串作为输入,我希望我的方法输出一个字符串数组,即[td,div,b,a,div,br,br,br,br,b].

我试图Jsoup解析 html 字符串,但似乎没有办法捕获像br. 我想知道任何其他 Java 库都可以为我解决问题。最后的手段是使用正则表达式技术。如果有人可以为此目的想出一个简洁的正则表达式,它也可以。

4

3 回答 3

3

您可以使用正则表达式:

    Pattern p = Pattern.compile("<([^\\s>/]+)");
    Matcher m = p.matcher(txt);
    while(m.find()) {
        String tag = m.group(1);
        System.out.println(tag);
    }
于 2012-11-23T12:54:26.033 回答
0

使用 JSoup 解析字符串后,使用它的getAllElements()方法,迭代结果,并为每个元素调用tagName()

于 2012-11-23T12:48:59.993 回答
0

我会考虑使用HTMLEditorKit.Parser. 即使 Swing 只能呈现 HTML 3.2,解析器也应该读取并保留所有标签:

public List<String> getTags(Reader reader)
throws IOException {

    final List<String> tags = new ArrayList<>();

    HTMLEditorKit.ParserCallback callback =
        new HTMLEditorKit.ParserCallback() {
            @Override
            public void handleStartTag(HTML.Tag tag,
                                       MutableAttributeSet attributes,
                                       int pos) {
                super.handleStartTag(tag, attributes, pos);
                tags.add(tag.toString());
            }
        };

    HTMLEditorKit.Parser parser = new ParserDelegator();
    parser.parse(reader, callback, true);

    return tags;
}
于 2012-11-24T12:33:23.670 回答