Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
321 views
in Technique[技术] by (71.8m points)

java - jsoup - strip all formatting and link tags, keep text only

Let's say i have a html fragment like this:

<p> <span> foo </span> <em> bar <a> foobar </a> baz </em> </p>

What i want to extract from that is:

foo bar foobar baz

So my question is: how can i strip all the wrapping tags from a html and get only the text in the same order as it is in the html? As you can see in the title, i want to use jsoup for the parsing.

Example for accented html (note the 'á' character):

<p><strong>Tarthatatlan biztonsági viszonyok</strong></p>
<p><strong>Tarthatatlan biztonsági viszonyok</strong></p>

What i want:

Tarthatatlan biztonsági viszonyok
Tarthatatlan biztonsági viszonyok

This html is not static, generally i just want every text of a generic html fragment in decoded human readable form, width line breaks.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

With Jsoup:

final String html = "<p> <span> foo </span> <em> bar <a> foobar </a> baz </em> </p>";
Document doc = Jsoup.parse(html);

System.out.println(doc.text());

Output:

foo bar foobar baz

If you want only the text of p-tag, use this instead of doc.text():

doc.select("p").text();

... or only body:

doc.body().text();

Linebreak:

final String html = "<p><strong>Tarthatatlan biztonsági viszonyok</strong></p>"
        + "<p><strong>Tarthatatlan biztonsági viszonyok</strong></p>";
Document doc = Jsoup.parse(html);

for( Element element : doc.select("p") )
{
    System.out.println(element.text());
    // eg. you can use a StringBuilder and append lines here ...
}

Output:

Tarthatatlan biztonsági viszonyok  
Tarthatatlan biztonsági viszonyok

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...