使用jsoup标记HTML DOM的深度和最大标记深度

时间:2014-06-09 14:07:00

标签: jsoup

我想知道是否可以使用Jsoup for html pages这样的事情。

HTML文档,公司和员工被视为html标签:

<company> 
        <staff id="1">
                <firstname>George</firstname>
                <lastname>Deren</lastname>
                <nickname>Revan</nickname>
                <salary>50000</salary>
                <age>24</age>
        <extra>
            <test>123</test>
        </extra>

例如,括号将包含该特定标记的DOM深度。

company[1]
staff[2]
firstname[3]
lastname[3]
nickname[3]
salary[3]
age[3]
extra[3]
test[4]

最深层次是:4

1 个答案:

答案 0 :(得分:1)

您可以使用节点访问者。它具有深度值。假设您的xml存储在data.xml文件中,然后该程序打印出您想要的内容

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Node;
import org.jsoup.nodes.TextNode;
import org.jsoup.parser.Parser;
import org.jsoup.select.NodeVisitor;

public class JsoupDepth {

    public static void main(String[] args) {
        File input = new File("data.xml");
        try {
            Document doc = Jsoup.parse(new FileInputStream(input), "UTF-8", "", Parser.xmlParser());
            doc.traverse(new NodeVisitor() {
                public void head(Node node, int depth) {
                    if(!(node instanceof TextNode)) {
                        System.out.println(node.nodeName() + "[" + depth + "]");
                    }
                }
                public void tail(Node node, int depth) {
                }
            });
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}