Jsoup解析添加分隔符

时间:2014-09-08 07:07:21

标签: html jsoup

我正在尝试使用Jsoup解析HTML文件并删除html标记。每当我删除HTML标记时,我都需要一个分隔符(fullstop)而不是标记。

例如,如果html是:

<head> <title>N-gram and Fast Pattern Extraction Algorithm - CodeProject</title>

我希望输出为

..N-gram and Fast Pattern Extraction Algorithm - CodeProject.

我是Jsoup的新人。是否可以使用Jsoup?

1 个答案:

答案 0 :(得分:1)

小心递归。对于一个大型DOM,它可能会导致您出现问题,无论是内存还是性能方面。

import java.util.ListIterator;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.nodes.TextNode;
import org.jsoup.select.Elements;

public class Main {

    public static void main(String[] args) {
        try {

            String html = "<html><head>" +
                                    "<title>Introduction</title>" +
                                "</head>" +
                                    "<body>" +
                                    "<a target=\"_top\" href=\"/tags/ref_eventattributes.asp\">HTML Events</a>"+
                                    "<a target=\"_top\" href=\"/tags/ref_canvas.asp\">HTML Canvas</a>"+
                                    "<a target=\"_top\" href=\"/tags/ref_av_dom.asp\">HTML Audio/Video</a>"+ 
                                    "<a target=\"_top\" href=\"/tags/ref_html_dtd.asp\">HTML Doctypes</a></body></html>";

            Document doc = Jsoup.parse(html);
            System.out.println(doc);

            System.out.println("\n------------------------------------------------------\n");
            replaceTag(doc.children());

            System.out.println(doc);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void replaceTag(Elements els) {
        ListIterator<Element> iter = els.listIterator();
        while(iter.hasNext()) {
            Element el = iter.next();  
            replaceTag(el.children());
            if(el.parentNode() != null)
                el.replaceWith(new TextNode("." + el.text().trim() + ".", ""));
        }
    }
}
相关问题