簡體   English   中英

如何使用Jsoup遍歷HTML樹?

[英]How I can traverse the HTML tree using Jsoup?

我想這個問題已被問到,但我找不到任何東西。

從Jsoup中的Document元素,我如何遍歷HTML內容中的所有元素?

我正在閱讀文檔,我正在考慮使用childNodes()方法,但它只接受下面一個leval的節點(我理解)。 我想我可以使用這種方法進行一些遞歸,但我想知道是否有更合適/本地的方法來做到這一點。

Document (和任何Node子類),您可以使用traverse(NodeVisitor)方法。

例如:

document.traverse(new NodeVisitor() {
    public void head(Node node, int depth) {
        System.out.println("Entering tag: " + node.nodeName());
    }
    public void tail(Node node, int depth) {
        System.out.println("Exiting tag: " + node.nodeName());
    }
});

1)您可以使用*選擇器選擇文檔的所有元素。

Elements elements = document.body().select("*");

2)使用Element.ownText()方法單獨檢索每個文本。

for (Element element : elements) {
  System.out.println(element.ownText());
}

3)使用Element.html(String strHtml)單獨修改每個文本。 (清除元素中的任何現有內部HTML,並將其替換為已解析的HTML。)

element.html(strHtml);

希望這會幫助你。 謝謝!

您可以使用以下代碼:

public class JsoupDepthFirst {

    private static String htmlTags(Document doc) {
        StringBuilder sb = new StringBuilder();
        htmlTags(doc.children(), sb);
        return sb.toString();
    }

    private static void htmlTags(Elements elements, StringBuilder sb) {
        for(Element el:elements) {
            if(sb.length() > 0){
                sb.append(",");
            }
            sb.append(el.nodeName());
            htmlTags(el.children(), sb);
            sb.append(",").append(el.nodeName());
        }
    }

    public static void main(String... args){
        String s = "<html><head>this is head </head><body>this is body</body></html>";
        Document doc = Jsoup.parse(s);
        System.out.println(htmlTags(doc));
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM