>  기사  >  Java  >  Jsoup를 사용하여 HTML을 텍스트로 변환할 때 줄바꿈을 유지하는 방법은 무엇입니까?

Jsoup를 사용하여 HTML을 텍스트로 변환할 때 줄바꿈을 유지하는 방법은 무엇입니까?

DDD
DDD원래의
2024-10-31 20:37:29217검색

How to Preserve Line Breaks When Converting HTML to Text Using Jsoup?

Jsoup을 사용하여 HTML에서 텍스트로 변환 시 줄 바꿈 유지

jsoup를 사용하여 HTML을 일반 텍스트로 변환할 때 줄 바꿈을 유지하는 것은 다음과 같습니다. 출력의 가독성과 구조를 유지하는 데 중요합니다. 기본적으로 jsoup의 text() 메소드는 HTML 코드에 있는 줄바꿈을 유지하지 않습니다.

해결책:

줄바꿈을 효과적으로 유지하려면 br2nl()을 활용하세요. 다음과 같은 개선 사항이 통합된 메서드입니다.

  1. 기존 줄 바꿈 유지: 원본 HTML에 줄 바꿈 문자(n)가 포함된 경우 출력에서 ​​해당 문자가 유지됩니다.
  2. 변환
    그리고

    태그: 줄 바꿈은
    내용에 n을 추가하여 도입됩니다. 태그. 또한

    의 내용 앞에 nn이 추가됩니다. 새 단락을 나타내는 태그입니다.

  3. 사후 처리: 수정된 HTML이 렌더링되고 나머지 이스케이프된 줄 바꿈(\n)은 실제 줄 바꿈(n)으로 변환됩니다. 다른 특수 문자를 적절하게 처리하기 위해 Jsoup.clean()을 사용하여 결과 문자열을 정리합니다.

사용법:

<code class="java">import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;

public class LineBreakPreserver {

    public static String br2nl(String html) {
        if (html == null) {
            return html;
        }

        Document document = Jsoup.parse(html);
        document.outputSettings(new Document.OutputSettings().prettyPrint(false));
        document.select("br").append("\n");
        document.select("p").prepend("\n\n");
        String s = document.html().replaceAll("\\n", "\n");
        return Jsoup.clean(s, "", Whitelist.none(), new Document.OutputSettings().prettyPrint(false));
    }

    public static void main(String[] args) {
        String html = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN \">" +
                "<HTML> <HEAD> <TITLE></TITLE> <style>body{ font-size: 12px;font-family: verdana, arial, helvetica, sans-serif;}</style> </HEAD> <BODY><p><b>hello world</b></p><p><br><b>yo</b> <a href=\"http://google.com\">googlez</a></p></BODY> </HTML> ";

        String result = br2nl(html);
        System.out.println(result);
    }
}</code>

출력:

hello world
yo googlez

위 내용은 Jsoup를 사용하여 HTML을 텍스트로 변환할 때 줄바꿈을 유지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.