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].

HTML文字列を解析しようとしましJsoupたが、のようなタグをキャプチャする方法がないよう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 に答える