2012-03-05 6 views
0

HTMLアイランドを含むテキストがあります。JavaでのHTMLフラグメントの抽出

例:

qwwdeadaskdfdaskjfhbsdfkf<a href="/cookbook/modifying-data/set-attributes">Set attribute values</a>gfkjgfkjrgjgjgjgjgroggjrog <b>jsoup</b>sdflkjsdfsfklsfklfjsfkljsfljsf<a href="/apidocs/org/jsoup/Jsoup.html#parse(java.lang.String)" title="Parse HTML into a Document.">Jsoup.parse(String html)</a>skgjdfgkjdfgkldfjgdfkgljdfg 

がどのように私は、これらのHTMLの断片を抽出することができますか?

+1

HTMLテキストとHTML以外のテキストの境界を定義するものは何ですか? –

+0

@IraBaxter:彼はHTMLタグを意味すると思います。 –

+0

あなたは何でも[正規表現は考慮しない](http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags)。 –

答えて

0

Javaは、XMLのDOM解析とSAX解析の両方をサポートしていますが、どちらも文書の整形が必要です。したがって、あなたの例は解析されません。 NekoHTML(http://nekohtml.sourceforge.net/)というプロジェクトがあり、整形されていないHTMLのスキャンをサポートしています。

0

私はまさにあなたが求めていることをしています - テキストの塊の中にHTMLフラグメントを見つける - テキストを囲むタグをラップし、次にjava.xml.parsers.DocumentBuilderを使用してDOMツリーを作成します。

基本的な考え方(と省略さくらい)があるだけで

String fragment = "<wrap_node>" + orig_text + "</wrap_node>"; 
Document d = builder.parse(fragment); 

タグはなど...欠落終わり、不適切なネストを、よく形成されていない場合は...これは動作しませんが、私は何かを拒否したいので、これは私のために働く。

関連する問題