0

このようにフォーマットされたhtmlドキュメントがあります:

<p>
 some plain text <em>some emphatized text</em>, <strong> some strong text</strong>
</p>
<p>
 just some plain text
</p>
<p>
  <strong>strong text </p> followed by plain, <a>with a link at the end!</a>
</p>

テキストを抽出したいと思います。dom のようなパーサーを使用すると、各段落を抽出できます

、しかし問題は内部にあります。内部タグからもテキストを抽出し、結果の文字列を同じ順序で取得する必要があります。上記の例の最初の段落では、抽出したい:

some plain text some emphatized text, some strong text

そして、この目的のためには、sax のようなパーサーが dom よりも優れていると思います。内部タグの番号またはシーケンスを知ることができないためです。段落には、異なるタイプのゼロまたは複数の内部タグを含めることができます。

4

3 に答える 3

0

文字列extractedText=Html.fromHtml(Your HTML String).toString()

これにより、抽出されたテキストが得られます。これがお役に立てば幸いです。

于 2012-09-08T11:12:31.217 に答える
0
Add code to read CDATA by DOM pase
**childNode.getNodeType() == Node.CDATA_SECTION_NODE**

if Using XMLUtils modify like

public static String getNodeValue(Node node) {
        node.normalize();
        String response = node.getNodeValue();
        if (response != null) {
            return response;
        } else {
            NodeList list = node.getChildNodes();
            int size = list == null ? 0 : list.getLength();
            for (int j = 0; j < size; j++) {
                Node childNode = list.item(j);
                if (childNode.getNodeType() == Node.TEXT_NODE
                        || childNode.getNodeType() == Node.CDATA_SECTION_NODE) {
                    response = childNode.getNodeValue();
                    return response;
                }
            }
        }
        return "";
    }
于 2012-09-09T07:04:09.067 に答える
0

dom パーサーを使用して、p タグ内のテキスト (子 html 要素を含む) を文字列変数に取得し、他の機能を使用して結果の文字列からすべての html タグを取り除くことができます。これにより、子要素タグなしで p タグ間のすべてのコンテンツが残るはずです。

<p>
    some plain text <em>some emphatized text</em>, <strong> some strong text</strong>
</p>
<p>
    just some plain text
</p>
<p>
    <strong>strong text </p> followed by plain, <a>with a link at the end!</a>
</p>

いくつかの dom パーサーを使用して p タグを文字列に抽出すると、次のような文字列が得られます。

String content = "some plain text <em>some emphatized text</em>, <strong> some strong text</strong>";
content = stripHtmlTags( content );
println( content ); // some plain text some emphatized text, some strong text
于 2012-09-08T10:40:06.633 に答える